簡體   English   中英

為什么我的重命名文件不起作用?

[英]Why isn't my rename file working?

我在重命名文件時遇到麻煩。 我正在嘗試刪除現有文件的幾行,並將其替換為新文件。

string line;   
ifstream myfile(filename);  
ofstream outfile;  
outfile.open(filename.append(".new"));  

if(myfile.is_open()) {
    //loop here that runs through code and calles
    //outfile << line; repeatedly
}

int test = rename(filename.append(".new").c_str(),filename.c_str());
if (test == 0) cout << "Success";
else cout << "Failure";

根據我在網上看到的內容,我希望這可以創建一個新文檔,填充它,然后用更新的文檔替換原始文檔。

有人看到我哪里出問題了嗎?

好像失敗了,因為您仍然打開了兩個文件。 您很可能在鎖定文件時無法重命名該文件。 嘗試重命名之前,請關閉文件。

此外,您需要先刪除原始文件,然后才能重命名。

在偽代碼中,這是您需要做的:

  • 打開原始文件。
  • 打開臨時.new文件。
  • 執行您執行的所有任務。
  • 關閉兩個文件。
  • 刪除原始文件。
  • 改名。

rename調用失敗時,您的C ++實現可能會設置errno 因此,您應該檢查errno的值以找出調用失敗的原因。 一定要熟悉錯誤報告機制,以便自己診斷問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM