这是我的代码,用于计算我的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);
}
}
}
答案 0 :(得分:1)
您的用户目录很可能包含到路径中较高位置的文件夹的快捷方式(也称为符号链接),您的代码将按照这些来获取已经计入的文件,这将导致无限链接。
E.g。
-Users
- Test
-ShortCutToUsers
有关确定符号链接的更多详细信息,请参阅此stackoverflow问题:
Java 1.6 - determine symbolic links
如果您使用的是java 7+,则可以按如下方式确定符号链接:
Files.isSymbolicLink(path)