如何使用Linux中的C ++程序将文件从一个位置移动到另一个位置? 我编写了一个程序来执行此操作并运行,但是当我尝试将文件移动到另一个目录时它不会移动文件,我从cout语句中收到错误消息。当我尝试重命名该文件时,将其移动到具有新名称的同一目录中。如何修复我的代码,以便将文件移动到另一个目录?
这是我写的代码:
#include <iostream>
#include <stdio.h>
using namespace std;
int main ()
{
int result=1;
char oldname[500];
char newname[500];
cout << "Enter the name of a file you want to move (include directory structure)";
cin >> oldname;
cout << "Enter the new location (include directory structure)";
cin >> newname;
result = rename( oldname , newname );
if ( result == 0 )
cout << "File successfully moved" << endl;
else
cout << "Error moving file" << endl;
return 0;
}
修改 我在我的代码中添加了perror,显示的错误信息是“Error moving file:No such file or directory”,即使我尝试移动它的目录确实存在并且它具有创建和删除文件权限。
答案 0 :(得分:2)
您的代码在大多数情况下都适用。但是你忽略了一些重要的事情,在这种情况下它会破裂:
oldname
和newname
rename()
无法在文件系统之间移动,所以这样做(并包含iostream
)
ifstream ifs(oldname, ios::in | ios::binary);
ofstream ofs(newname, ios::out | ios::binary);
ofs << ifs.rdbuf();
remove(oldname);
在remove()
之前,您的总磁盘空间会少一些。
newname
文件系统上的可用空间会缩小,这是您可以使用的空闲空间,否则您将无法在此处移动文件< / LI>
oldname
和newname
位于同一个文件系统上并且您真的关心这种临时丢失,那么请检查您是否将使用相同的文件系统并最终使用rename()
。< / LI>
答案 1 :(得分:1)