文件与Java中的随机访问文件

时间:2018-08-23 12:31:00

标签: java io nio

我需要搜索目录并获取其中的所有文件。所以我以前将文件存储在File数组中。我的问题是

1)数组是否包含实际文件或对文件的引用? 2)哪个是最好的选择File或RandomAcessFile?为什么会这样?

请帮我提供我的代码

public File[] getAllFiles(String path) {
    File file  = new File(path);

    if (file.isDirectory() && file.exists()) {
        allFiles = file.listFiles();
        System.out.println("Files in the directory " + file.getName() 
            + " present in the path " + file.getAbsolutePath()
            + " are fetched sucessfully");
        printAllFiles(allFiles);

    }

    return allFiles;
}

public void printAllFiles(File data[]) {
    int count = 0;

    for (File i : data) {
        System.out.println("Index : " + count + " Name : " + i.getName());
        count++;
    }
}

3 个答案:

答案 0 :(得分:6)

File是可能存在或可能不存在的文件/目录的抽象表示。它不消耗任何资源,因此您可以随意存储它们。

RandomAccessFile用于实际的文件访问(读取,查找,写入),因此此处不需要。

答案 1 :(得分:2)

1)Java变量(例如一个),您的数组包含了它,但从来都不是对象。它们仅指向保存在磁盘上某处的对象。因此,您的文件阵列仅指向磁盘上的某些文件对象。但是File对象也不是File。它们仅包含文件的路径并指向该文件。

所以不,它们仅指向文件

答案 2 :(得分:1)

1)file.listFiles该方法返回此抽象路径名表示的目录中文件和目录的路径名数组。

2)查看此答案https://stackoverflow.com/a/905720/7782618