使用FindFirstFile搜索目录的相对路径
relative path for searching directory with FindFirstFile
在包含我的exe的目录中,我有一个名为" saved "的文件夹。我想显示这个目录中包含的文件。
我使用了下面的代码:使用C和Windows列出目录内容
现在是棘手的部分。如果我使用.\saves\
作为我的目录,它告诉我无法找到路径。然而,如果我使用..\release\saves\
,它工作得很好。但这是愚蠢的。我不想先回到父文件夹然后再返回。特别是关于我不知道用户给包含exe的目录起什么名字(在我的情况下,它是"释放",但谁知道用户做了什么:-D)。
我通读了这篇文章:http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#fully_qualified_vs._relative_paths,但是没有多大帮助。
我也试过saves\
或.saves\
,但它也不起作用。
我希望有人能告诉我如何解决这个问题。
你实际上并没有在代码中做错什么——你已经从Visual Studio启动了这个项目,它将工作目录设置为Release/Debug文件夹的父目录。
进入项目->设置(属性)->配置属性->调试->工作目录
你也可以在VS之外运行exe,相对路径会像你期望的那样运行。
如果它是相对于可执行文件的路径,而不是相对于当前工作目录的路径,那么您可以使用GetModuleFileName()
来获得可执行文件的完整路径。然后,从路径末尾删除可执行文件的名称,并使用
std::string executable_directory_path()
{
std::vector<char> full_path_exe(MAX_PATH);
for (;;)
{
const DWORD result = GetModuleFileName(NULL,
&full_path_exe[0],
full_path_exe.size());
if (result == 0)
{
// Report failure to caller.
}
else if (full_path_exe.size() == result)
{
// Buffer too small: increase size.
full_path_exe.resize(full_path_exe.size() * 2);
}
else
{
// Success.
break;
}
}
// Remove executable name.
std::string result(full_path_exe.begin(), full_path_exe.end());
std::string::size_type i = result.find_last_of("\/");
if (std::string::npos != i) result.erase(i);
return result;
}
我将使用boost::filesystem
http://www.boost.org/doc/libs/1_53_0/libs/filesystem/doc/index.htm。
作为奖励,您将获得与操作系统无关的代码
我认为你的错误是使用\saves\
,忘记指定搜索参数/字符串
你应该使用:
saves\*
这将搜索任何文件或文件夹
- Windows 和 Linux 之间的相对路径分辨率差异?
- 如何获取 CMake 单元测试的相对路径?
- 从另一个应用启动我的应用时出现相对路径更改问题
- CMake 链接 2 个具有相对路径的库
- cmake find_package CMakeLists.txt 子文件夹中的相对路径
- 在可执行文件中使用带有符号链接的相对路径
- C++流找不到相对路径
- 如何将COM .tlb文件导入具有相对路径C++文件中?
- C++包括断开的相对路径
- CMake 安装具有相对路径的目标
- CMake为什么通过相对路径链接外部库
- Boost Filesystem flowly_caronical不会在没有父文件夹的情况下解决相对路径
- 如何将共享库与具有相对路径的 CMake 链接
- 相对路径中的错误
- C 能够以其完整路径打开代码::块中的文件,但不能以相对路径作为命令行参数打开文件
- 如何在基于QT的Autodesk Maya插件中使用相对路径
- 如何使用QT程序中的默认应用程序打开使用相对路径的PDF
- Visual Studio单元使用具有相对路径的文件测试
- 在 Visual Studio 中为 SFML 设置相对路径
- 如何配置MSVC以使用__FILE__显示头文件的相对路径