将文件重命名为已存在的文件名

时间:2018-03-07 11:56:44

标签: c++

我正在将文件重命名为file1.txt"newFile.txt",但是当代码下次运行时。文件newFile.txt已存在,因此名称为"file1.txt"的新文件未重命名为"newFile.txt"
我想要的是如果"newFile.txt"已经存在重命名"file1.txt"应该覆盖"file1.txt"是否可能?

这是我的代码

#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main() {
    char data[100];

    fstream outfile;
    outfile.open("afile.dat" , ios::out );

    cout << "Writing to the file" << endl;
    cout << "Enter your name: ";
    cin.getline(data, 100);

    outfile << data << endl;

    cout << "Enter your age: ";
    cin >> data;
    cin.ignore();

    // again write inputted data into the file.
    outfile << data << endl;

    cout << "Reading from the file" << endl;

    outfile >> data;
    cout << data << endl;

    outfile >> data;
    cout << data << endl;
    outfile.close();

   // this is how i am renaming
    std::rename("afile.dat" , "file2.txt");

    return 0;
}

2 个答案:

答案 0 :(得分:1)

您的代码只能使用一次文件并重命名。

第二次运行程序时,该目录中已存在文件banana.txt,函数std::rename("afile.dat" , "banana.txt");将返回错误代码。

因此,您需要检查具有新文件名的文件是否已存在,或者在函数std::rename之后处理错误。

答案 1 :(得分:-2)

为什么不将新文件的内容输出到另一个文件中,然后删除已经存在的原始文件并将新文件重新命名为原始文件

cat newfile > newfile1 删除原始文件 ren newfile1 到原始文件名......我一直这样做......我必须使用你用来做的所有代码丢失一些东西