簡體   English   中英

寫入文件而不覆蓋或附加

[英]Writing to a file without overwriting or appending

我正在用Java編寫程序,其中輸出被寫入.txt文件。 每次我運行程序時,文件都會被覆蓋。 我不想使用附加開關並將數據添加到文件中。

我想擁有它,因此每次運行程序時都會創建一個具有相同名稱的新文件。 例如,如果overflow.txt是文件名,並且我運行了三次程序,則應制作文件overflow(1).txtoverflow(2).txtoverflow(3).txt

如何做到這一點?

檢查文件是否存在,如果存在,則將其重命名。 使用File.existsFileUtils.moveFile

您將需要遞歸執行此操作,直到沒有發現沖突為止。

首先檢查文件是否存在。 如果是這樣,請修改名稱。

String origName = "overflow";
String ext = ".txt";
int num = 1;
file = new File(origName + ext);
while (file.exists()) {
 num++;
 file = new File(myOrigFileName +"(" + num + ")" + ext);
}

根據實際需求進行修改。 問題不是很清楚。

在大多數文件系統中,“具有相同名稱的新文件”沒有意義。

在您的示例中,您具有三個名稱不同的文件:

  • 溢出(1).txt
  • 溢出(2).txt
  • 溢出(3).txt

方括號中的位仍然是名稱的一部分。 如果要模仿該行為,則必須:

  • 檢測“純”文件名的存在(如果要寫入的文件名不存在)
  • 從1開始計數,然后每次刪除擴展名,在括號中添加計數,然后放回擴展名,以得出“新”文件名
  • 繼續計數,直到找到不存在的文件名
String dirPath = "./";
String fileName = dirPath + "overflow.txt";
if(new File(dirPath + fileName).exist())
{
    int counter = 0;
    while(new File(dirPath + "overflow(" + ++counter + ").txt").exist());
    fileName = "overflow(" + counter + ").txt";
}

實例化File對象時,請驗證它是否存在(如果存在),只需通過添加大括號和數字對其進行重命名,然后再次檢查。

暫無
暫無

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

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