使用JAVA查找计算机中的所有文件

时间:2017-03-05 13:02:45

标签: java recursion

这是我的代码,用于计算我的comp中的所有文件,代码没有停止运行,有超过2000000个文件,这是正常的,或者是无限循环中的代码。谢谢所有帮助:)

import java.io.*;
import java.util.*;
//got the framework from this link: stackoverflow.com/questions/3154488
public class RFF {
    public static void main(String [] args) {
        File[] files = new File("/Users").listFiles();
        showFiles(files);
        System.out.println(size);
    }
    static File file1 = new File ("/Users/varun/Desktop/a.pdf");
    static double size = file1.length();

    static int i = 0;
    public static void showFiles(File[] files) {
        try { 
            for (File file: files) {
                if (file.isDirectory()) {
                    if (file.isFile() == true) 
                        i++;
                    else 
                        i = i;

                    if (file.length() > size)
                        size = file.length();
                    System.out.println("FileCount: " + i + ">>> FileSize: " +file.length() + " >>> FileName: " + file.getName() );
                    showFiles(file.listFiles()); // Calls same method again.
                } else {
                    i++;
                    if (file.length() > size)
                        size = file.length();
                    System.out.println("FileCount: " + i + ">>> FileSize: " + file.length() + " >>> FileName: " + file.getName() );
                }

            }
        } catch (NullPointerException e) {
            System.out.println ("Exception thrown :" + e);
        }


    }
}

1 个答案:

答案 0 :(得分:1)

您的用户目录很可能包含到路径中较高位置的文件夹的快捷方式(也称为符号链接),您的代码将按照这些来获取已经计入的文件,这将导致无限链接。

E.g。

-Users 
  - Test
     -ShortCutToUsers

有关确定符号链接的更多详细信息,请参阅此stackoverflow问题:

Java 1.6 - determine symbolic links

如果您使用的是java 7+,则可以按如下方式确定符号链接:

Files.isSymbolicLink(path)