I can't move files through C++ (both MoveFile, MoveFileEx, filesystem::rename) - Stack Overflow

I was trying to write a simple program to move files from directory A to directory B, in the end the fi

I was trying to write a simple program to move files from directory A to directory B, in the end the file moving part keeping giving ACCESS DENIED errors and what so. Here is the code

const char* src = "C:\\Users\\user1\\testfolder\\source\\test.txt";
const char* dest = "C:\\Users\\user1\\testfolder\\destination";


try {
    std::filesystem::rename(src, dest);
} catch (std::filesystem::filesystem_error& e) {
    std::cout << e.what() << '\n';
}
return 0;

This prints the error ACCESS DENIED

VS2022 is running as administrator. C++ Version is C++ 17. The file can be moved through cmd with no problem.

MoveFile exits with error 183 MoveFileEx(src,dest,MOVEFILE_REPLACE_EXISTING) exits with error 5 (ACCESS DENIED)

I tried restarting VS, running as admin, and tried other file moving solutions, none seem to work.

I was trying to write a simple program to move files from directory A to directory B, in the end the file moving part keeping giving ACCESS DENIED errors and what so. Here is the code

const char* src = "C:\\Users\\user1\\testfolder\\source\\test.txt";
const char* dest = "C:\\Users\\user1\\testfolder\\destination";


try {
    std::filesystem::rename(src, dest);
} catch (std::filesystem::filesystem_error& e) {
    std::cout << e.what() << '\n';
}
return 0;

This prints the error ACCESS DENIED

VS2022 is running as administrator. C++ Version is C++ 17. The file can be moved through cmd with no problem.

MoveFile exits with error 183 MoveFileEx(src,dest,MOVEFILE_REPLACE_EXISTING) exits with error 5 (ACCESS DENIED)

I tried restarting VS, running as admin, and tried other file moving solutions, none seem to work.

Share Improve this question edited Nov 16, 2024 at 2:53 President James K. Polk 42.1k30 gold badges110 silver badges146 bronze badges asked Nov 15, 2024 at 21:41 クッキーくんクッキーくん 131 silver badge2 bronze badges 1
  • 3 Don't you need to include the destination file name in dest? – Michael Liu Commented Nov 15, 2024 at 21:44
Add a comment  | 

1 Answer 1

Reset to default 2

There is at least one problem with your dest path value, possibly two problems.

  1. If the source in a call to std::filesystem::rename is a non-directory file (as yours is), then the destination must also be a non-directory file.

  2. Even if the new file does not (yet) exist, the directory into which you are placing it must exist (third second-level bullet in the page linked below).

So, first make sure that your C:\\Users\\user1\\testfolder\\destination folder exists, then add the destination filename to the specified target path, as below:

const char* dest = "C:\\Users\\user1\\testfolder\\destination\\test.txt";

Further reference: cppreference

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745669635a4639330.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信