我的情况是我正在从数据源加载文件。如果两次引用相同的文件,我想抛出一个错误。
这是一个不安全的实现演示来说明这个想法:
public static void main(String[] args) throws IOException {
List<String> strings = Arrays.asList("a.txt", "b.txt", "a.txt");
List<File> files = new ArrayList<File>();
for(String fileString: strings) {
files.add(new File(fileString));
}
}
现在解决这个问题的最简单方法是在绝对文件路径上使用一个集合:
public static void main(String[] args) throws IOException {
List<String> strings = Arrays.asList("a.txt", "b.txt", "a.txt");
List<File> files = new ArrayList<File>();
Set<String> fileSet = new HashSet<String>();
for(String fileString: strings) {
File file = new File(fileString);
boolean unique = fileSet.add(file.getAbsolutePath());
if (unique)
files.add(new File(fileString));
}
}
JVM是否有办法让我不必执行此操作?以下是我希望文件API中存在的方法isUnique
的草图:
public static void main3(String[] args) throws IOException {
List<String> strings = Arrays.asList("a.txt", "b.txt", "a.txt");
List<File> files = new ArrayList<File>();
for(String fileString: strings) {
File file = new File(fileString);
boolean unique = file.isUnique();
if (unique)
files.add(new File(fileString));
}
}
我的问题是:有没有办法判断文件引用在JVM实例中是否唯一?
答案 0 :(得分:0)
没有
我甚至认为您不能使用任何反射API来获取所有文件引用并自行检查。我只是按你的建议使用绝对文件路径。