在c++中使用全路径打开文件
Open a file using full path in C++
这个问题真的让我一时难倒了。这个程序搜索一个文件目录和它所有的子目录。当它到达一个非目录类型的文件时,我想打开这个文件,把它扔到一个缓冲区中,并将它与另一个已经在另一个缓冲区中的文件进行比较。问题是文件无法打开,给我一个errno,文件或目录不存在。我的假设是,它试图仅通过其文件名而不是整个路径打开文件。那么我怎么把整个路径拉进来呢?我尝试了一些最终导致编译错误的事情。谁能给我点提示?
#include <dirent.h>
#include <errno.h>
#include <stdio.h>
#include <cstdlib>
#include <iostream>
#include <cctype>
#include <cstdio>
#include <string>
#include <list>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
using std::string;
using std::ostream;
using std::list;
using std::endl;
off_t tell(int fd) {
return lseek(fd, 0, SEEK_END);
}
void dir_traverse(const std::string& path, std::ostream& out) {
list<string> child_directories;
DIR*dirp = opendir(path.data());
struct dirent*dir_entry = readdir(dirp);
while(dir_entry !=NULL){
unsigned char d_type = dir_entry->d_type==DT_DIR?'D' : 'F';
if(d_type == 'D'){
if(dir_entry->d_name[0]!= '.') {
child_directories.push_back(dir_entry->d_name);
out<<'t'<<d_type<<":"<<dir_entry->d_name<<endl;
}
}
if(d_type == 'F'){
int fd= open(dir_entry->d_name, O_RDONLY);
if(fd =-1){
out<<"file did not open"<<'t'<<errno<<endl;
}
int size= tell(fd);
out<<'t'<<d_type<<":"<<dir_entry->d_name<<endl;
close(fd);
//open file
//read file
//compare two files
//print name of file and path if two are equal otherwise do nothing
}
dir_entry= readdir(dirp);
}
list<string>::iterator it = child_directories.begin();
while(it != child_directories.end()) {
dir_traverse(path + "/" + *it, out);
it++;
}
closedir(dirp);
}
int main() {
dir_traverse("./homework", std::cout);
}
将它们连接起来:
open((path + "/" + dir_entry->d_name).c_str(), ...)
相关文章:
- 如何将更多文件夹添加到c++include路径
- 从函数角度看ID到文件路径的内部与外部映射
- 在C++中设置基于操作系统的文件路径
- C++17 文件系统::remove_all 带有通配符路径
- 从 C 中的变量获取文件的路径,C++
- 将共享库的搜索路径更改为生成文件中提供的 rpath
- 修改生成文件以简化框架 #include 路径
- 将Visual Studio Code路径设置为.clang_format文件
- Windows 非 ASCII 文件路径
- 非 ASCII 文件路径窗口
- C++和带有国家符号的文件路径(也许用 UTF8 编码)
- 获取 H5::D ataSet 的hid_t和文件中的路径以使用 H5OCopy
- 在特定 Unicode 路径中创建文件
- 如何让用户在 tinyxml2 中输入 XML 文件的路径
- 如何将COM .tlb文件导入具有相对路径C++文件中?
- C++ 路径文件存在限制为 260 个字符
- QT-在pro中指定DLL路径.文件
- 路径文件存在导致链接器错误 2028/2019
- 选择QTableWidgetItem qt的路径文件
- 如何有一个正确的路径文件读取它到stringstream