【问题标题】:Generate filename for a copied file为复制的文件生成文件名
【发布时间】:2012-10-19 06:55:17
【问题描述】:

当您将文件复制并粘贴到同一目录中时,我希望获得与 Windows 中类似的行为。

例如,如果您复制/粘贴了一个名为 foo.txt 的文件,它将创建 foo Copy.txt,如果您再次粘贴它,它将创建 foo Copy(2).txt,如果您复制/粘贴 foo Copy.txt,@ 987654325@ 已创建。

是否有执行此操作的 Java 实用程序函数?我查看了File.createTempFile,但它生成的文件名太长并且包含类似 UID 的子字符串。

【问题讨论】:

  • 我不知道任何 API,但自己编写它会很简单 'if(file.exists)' ...

标签: java file io


【解决方案1】:

通过将 FileChooser 与“showSaveDialog”方法结合使用,您将获得所需的结果,因为 java 正在使用现有文件的操作系统行为。

【讨论】:

  • 我不希望用户必须在对话框中输入任何内容。
【解决方案2】:

有时,您只需先完成这项工作,这会让您对 API 有所了解。然后你可以编写自己的实用方法

File original = new File("build.xml");
String path = original.getAbsoluteFile().getParent();
String name = original.getName();
String ext = name.substring(name.indexOf("."));
name = name.substring(0, name.indexOf("."));
name = path + File.separator + name;

int index = 1;
File copy = new File(name + " (" + index + ")" + ext);
while (copy.exists()) {
    index++;
    copy = new File(name + " (" + index + ")" + ext);
}
System.out.println(copy);

【讨论】:

  • 那是不是?无论如何,感谢您展示循环的工作原理。
  • 是的,那将是 No,但我不会让我将其作为答案;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-14
  • 2015-04-19
  • 1970-01-01
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多