使用Java创建具有相似名称的文件,而不覆盖现有文件

我想知道是否可以创建具有相似名称的多个文件,而不会覆盖当前文件。

例如:如果我有一个文件:xyz.txt下次创建时应该是:xyz(1).txt

try { File makefile = new File("output.txt"); FileWriter fwrite = new FileWriter(makefile); fwrite.write("example file"); fwrite.flush(); fwrite.close(); } catch (IOException e) { e.printStackTrace(); } 

所以如果我重新运行这个程序,我的当前文件不应该被覆盖。 我已经尝试过if if with a flag变量将number添加为文件名的前缀。

我想知道是否有任何Java命令可以避免覆盖现有文件。

我想知道是否有任何本机java命令停止覆盖[并在文件名后附加数字]

不在核心Java库中,没有。

不是在@Greg Kopff已经指出的java中。 但你可以解决这样的事情:

  int count = 0; public void createFile(String name) throws IOException { File f; f = new File(name); if (!f.exists()) { f.createNewFile(); } else { count++; createFile(name + (count)); } } 

看看File.createTempFile()方法

要创建新文件,可以首先调整前缀和后缀以适应底层平台的限制。 如果前缀太长,那么它将被截断,但它的前三个字符将始终保留。 如果后缀太长,那么它也会被截断,但如果它以句点字符(’。’)开头,那么句点和后面的前三个字符将始终保留。 完成这些调整后,将通过连接前缀, 五个或更多内部生成的字符以及后缀来生成新文件的名称。

虽然类似于Bitmap的响应,但我想出了这个java代码(似乎可行)。 我不知道它是否最有效,但……

对于我的例子,我假设文件将是.txt文件

 String fileName = "output.txt"; File aFile = new File(fileName); int fileNo = 0; while(aFile.exists() && !aFile.isDirectory()) { fileNo++; String newName = fileName.replaceAll(".txt", "(" + fileNo + ").txt"); aFile = new File(newName); }