C++:无法移动文件,因为文件夹名称上有空格
C++: Cannot move a file, because of a space on folder's name
我正在使用 movefile()
将文件移至特定文件夹,但是,当我尝试这样做时,它不起作用,因为该文件夹的名称"新文件夹"中有空间但是,如果文件夹的名称没有空格,则可以工作
这是一个示例(没有文件夹,其中包含名称上的空间):
std::string input1 = "C:\Users\Username\link.txt";
std::string input2 = "C:\Users\Username\Desktop\NewFolder\link.txt";
MoveFile(input1.c_str(), input2.c_str());
有一个示例,当时有一个包含空间的文件夹
std::string input1 = "C:\Users\Username\link.txt";
std::string input2 = "C:\Users\Username\Desktop\New Folder\link.txt"; //here's the folder
MoveFile(input1.c_str(), input2.c_str());
我没有遇到任何语法错误,但是我很确定,由于" new" 和" folder" 之间的空间,它无效
有什么方法来修复它?
我无法再现故障。
使用我的项目配置为ANSI/MBC而不是Unicode(因此允许std::string::c_str()
传递到基于TCHAR
的MoveFile()
宏),所示的确切代码(仅用我自己替换Username
)对我来说很好。 MoveFile()
返回true,并且文件实际移动。
std::string input1 = "C:\Users\<my username>\link.txt";
std::string input2 = "C:\Users\<my username>\Desktop\New Folder\link.txt";
MoveFile(input1.c_str(), input2.c_str()); // <-- SUCCEEDS
因此,问题必须在其他地方。两者:
- 源文件不存在,或者是无法访问的。
- 目的地文件夹不存在(
MoveFile()
不会为您创建它!使用CreateDirectory()
或事先使用类似功能),或者无法访问。 - 移动数据时存在错误。在NTFS文件系统上很少见,因为将文件从一个文件夹从一个文件夹转移到同一驱动器上的另一个文件夹只会重新放置文件引用而不移动实际文件数据。
如果 MoveFile()
返回false,则需要致电GetLastError()
才能找出为什么失败。
相关文章:
- 如何将更多文件夹添加到c++include路径
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何在文档文件夹中创建目录
- "assimp/config.h"找不到,但它在文件夹中
- C++入门 5 版:类消息和文件夹
- 我可以在 Arduino 的库文件夹之外安装库吗?
- 如何按文件扩展名引用文件夹中的文件
- 在QTreeView中仅显示共享驱动器和文件夹
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- 介子复制/安装头文件到输出目录并保持文件夹结构
- vcruntime.h 从 Windows 包含文件夹中丢失?
- 在文件夹迭代上实现 RAII
- 使用 Powershell 命令将 cpp 文件的文件夹编译为 GNU 的 g++
- 使文件夹中的所有文件可供所有项目(子目录)访问
- 无法使用 CMake 从其他文件夹添加源文件
- 如何在安卓工作室中将c ++头文件从一个文件夹导入到另一个文件夹?
- 如何从Windows控制台调用.exe(C++)以在不同的目录(或任何目录)中创建文件夹?
- C++:无法移动文件,因为文件夹名称上有空格