写入文件而不覆盖或追加(Writing to a file without overwriting

2019-07-29 23:06发布

我用Java编写一个程序,输出写入到一个文本文件。 每次我运行该文件被覆盖的程序。 我不想使用append开关和数据添加到文件中。

我想有这么一个新的文件,具有相同的名称,创建的每个我运行程序时。 例如,如果overflow.txt是文件名,并且我运行该程序三次,将文件overflow(1).txtoverflow(2).txt ,和overflow(3).txt应。

如何才能实现这一目标?

Answer 1:

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

您需要,直到没有发现冲突递归做到这一点。



Answer 2:

检查文件是否存在第一。 如果是这样,修改名称。

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

根据实际需要修改。 问题不是很清楚。



Answer 3:

“具有相同名称的新文件”不会使大多数文件系统的意义。

在你的榜样,你有三个文件有不同的名称:

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

括号中的比特仍然是名称的一部分。 如果你想模仿这种行为,你必须:

  • 检测“普通”文件名存在(如果你想写入,如果不存在的话)
  • 从1开始计数,并制定出“新”通过删除扩展每次的文件名,加上括号中的数,然后把后面的扩展
  • 继续计数,直到你找到一个不存在的文件名


Answer 4:

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";
}


Answer 5:

当你实例化File对象,验证它是否存在,如果这样做,只是通过增加括号和数量重命名,并再次检查。



文章来源: Writing to a file without overwriting or appending