0

我正在用 Java 编写一个程序,其中输出被写入 .txt 文件。每次我运行程序时,文件都会被覆盖。我不想使用附加开关并将数据添加到文件中。

我想要它,所以每次运行程序时都会创建一个同名的新文件。例如,如果overflow.txt是文件名,我运行程序3次,文件,,,overflow(1).txtoverflow(2).txt应该overflow(3).txt被制作。

如何做到这一点?

4

5 回答 5

3

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

您需要递归地执行此操作,直到没有发现冲突。

于 2012-06-15T17:46:31.527 回答
3

首先检查文件是否存在。如果是,请修改名称。

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

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

于 2012-06-15T17:48:42.430 回答
2

“具有相同名称的新文件”在大多数文件系统中没有意义。

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

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

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

  • 检测“普通”文件名的存在(如果你想写入它,如果它不存在)
  • 从 1 开始计数,每次通过删除扩展名计算“​​新”文件名,将计数添加到括号中,然后将扩展名放回去
  • 继续计数,直到找到不存在的文件名
于 2012-06-15T17:46:11.420 回答
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";
}
于 2012-06-15T17:49:13.320 回答
0

当您实例化 File 对象时,验证它是否存在,如果存在,只需通过添加大括号和数字来重命名它,然后再次检查。

于 2012-06-15T17:47:04.913 回答