我想创建一个程序,让用户输入驱动器名称/文件夹(C:\
或f:\folder\
)和文件名(test.exe
),然后程序搜索给定驱动器中的文件或文件夹并打开文件。我设法做了打开文件的功能,但无法弄清楚如何搜索文件传递找到的文件的位置打开它。任何人都可以帮助我吗?
答案 0 :(得分:2)
您可以使用boost :: file_system。以下是文档:http://www.boost.org/doc/libs/1_55_0/libs/filesystem/doc/index.htm
编辑:过了一段时间,我发现我的主题已经脱离主题了。要检查文件是否存在,可以使用特殊的boost :: filesystem函数。
bool exists(const path& p);
<强> /修改
目录迭代器示例:http://www.boost.org/doc/libs/1_55_0/libs/filesystem/doc/tutorial.html#Directory-iteration
该示例使用了std :: copy,但您需要文件名。所以你可以这样做。
#include <boost/filesystem.hpp>
namespace bfs = boost::filesystem;
std::string dirPath = "."; // target directory path
boost::filesystem::directory_iterator itt(bfs::path(dirPath)); // iterator for dir entries
for ( ; itt != boost::filesystem::directory_iterator(); itt++)
{
const boost::filesystem::path & curP = itt->path();
if (boost::filesystem::is_regular_file(curP)) // check for not-a-directory-or-something-but-file
{
std::string filename = curP.string(); // here it is - filename in a directory
// do some stuff
}
}
如果你没有精力充沛 - 建设它可能会很复杂。 您可以通过boost.teeks99.com获取编译器和平台的预制增强二进制文件
另外,如果由于某些原因你不能使用boost,那么迭代目录会有特定于平台的方法,但我不知道你在哪个平台上,所以我不能为你提供一个例子。
答案 1 :(得分:-2)
试试这个:
char com[50]="ls ";
char path[50]="F:\\folder\\";
char file[50]="test.exe";
strcat(com,path);
strcat(com,file);
if (!system(com)) // system returns the return value of the command executed
cout<<"file not present\n";
else
{
cout<<"file is present\n";
strcat(path,file);
FILE* f = fopen(path,"r");
//do your file operations here
}