有没有办法判断文件引用在JVM实例中是否唯一?

时间:2014-12-25 12:07:44

标签: java file unique

我的情况是我正在从数据源加载文件。如果两次引用相同的文件,我想抛出一个错误。

这是一个不安全的实现演示来说明这个想法:

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实例中是否唯一?

1 个答案:

答案 0 :(得分:0)

没有

我甚至认为您不能使用任何反射API来获取所有文件引用并自行检查。我只是按你的建议使用绝对文件路径。