我正在尝试输出我的程序创建的一组点,并且我希望能够多次运行它,而不必手动移动文件或重命名它们。
我输出的文件的名称类似于“cluster-1.txt”(如果需要可以更改)。所以我需要我的程序来找出集群输出文件是否存在,找到编号最大的文件并创建一个编号更大的文件。
例如,如果程序第一次运行,它会检查,没有找到文件,并创建“cluster-0.txt”;如果程序第二次运行,它会检查并找到“cluster-0.txt”并创建“cluster-1.txt”;如果程序第n次运行,它将检查并找到具有最高n值的文件,并创建一个名为“cluster-n+1.txt”的文件。
如果可能的话,它应该忽略中间丢失的任何文件。因此,如果我有 cluster-0.txt、cluster-10.txt 和 cluster-11.txt,它应该创建 cluster-12.txt。但这不是必需的。
试试这个(抽象类中使用的方法和属性,也适用于打开的文件)
private static final String USER_HOME = System.getProperty("user.home");
private static final String DOWNLOAD_FOLDER = "Downloads";
public abstract String getFileName();
public abstract String getExtension();
public File createFile() {
int version = 0;
File file = getFilePath(version);
for (version = 1; file.exists(); version++) {
file = getFilePath(version);
}
return file;
}
private File getFilePath(final int version) {
final Path path = (version == 0)
? Paths.get(USER_HOME, DOWNLOAD_FOLDER, getFileName() + getExtension())
: Paths.get(USER_HOME, DOWNLOAD_FOLDER, getFileName() + " (" + version + ")" + getExtension());
return path.toFile();
}