遍历D盘时发现的2个小疑点,诚心求教
遍历D盘时发现的2个小问题,诚心求教
这个代码是用来遍历D盘里所有文件的。
有2个问题:
1.文件夹数量和文件总大小的统计都没有问题,但是统计出来的文件数量却比使用Windows属性统计出来的多1个,不知道这个是为什么?
2.如果将有注释的那行代码注释掉之后,运行结果出来个空指针提示,如下:(虽然可以执行完毕,但这个空指针提示是什么意思?)
****************************************************
java.lang.NullPointerException
at t20141104.TestFile.show(TestFile.java:13)
at t20141104.TestFile.show(TestFile.java:15)
at t20141104.TestFile.main(TestFile.java:30)
文件数量:37992
文件夹数量:9510
文件总大小:25957113869
****************************************************
------解决思路----------------------
是不是有隐藏文件啊
------解决思路----------------------
File[] files = file.listFiles();
这句有可能为null的
String[] ss = list();
if (ss == null) return null;
------解决思路----------------------
每个盘下面都有个
System Volume Information
这个文件,是系统文件
受保护的
访问不了
------解决思路----------------------

------解决思路----------------------
如果不去掉运行也是有问题的,之所以你看不到是因为文件太多了,把console占满了,你可以进行重定向看看,肯定有空指针的
这个代码是用来遍历D盘里所有文件的。
有2个问题:
1.文件夹数量和文件总大小的统计都没有问题,但是统计出来的文件数量却比使用Windows属性统计出来的多1个,不知道这个是为什么?
2.如果将有注释的那行代码注释掉之后,运行结果出来个空指针提示,如下:(虽然可以执行完毕,但这个空指针提示是什么意思?)
****************************************************
java.lang.NullPointerException
at t20141104.TestFile.show(TestFile.java:13)
at t20141104.TestFile.show(TestFile.java:15)
at t20141104.TestFile.main(TestFile.java:30)
文件数量:37992
文件夹数量:9510
文件总大小:25957113869
****************************************************
import java.io.File;
public class TestFile {
int fileCount = 0;
int dirCount = 0;
long tSize = 0;
public void show(String sourceFile){
try{
File file = new File(sourceFile);
File[] files = file.listFiles();
for(File fi:files){
if(fi.isDirectory()){
show(fi.getAbsolutePath());
dirCount ++;
}else if(fi.isFile()){
System.out.println(fi);//如果将这行注释掉,就会有空指针提示
fileCount ++;
tSize += fi.length();
}
}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) {
TestFile tf = new TestFile();
tf.show("d:\\");
System.out.println("文件数量:" + tf.fileCount);
System.out.println("文件夹数量:" + tf.dirCount);
System.out.println("文件总大小:" + tf.tSize);
}
}
------解决思路----------------------
是不是有隐藏文件啊
------解决思路----------------------
File[] files = file.listFiles();
这句有可能为null的
public File[] listFiles() {
String[] ss = list();
if (ss == null) return null;
int n = ss.length;
File[] fs = new File[n];
for (int i = 0; i < n; i++) {
fs[i] = new File(ss[i], this);
}
return fs;
}
String[] ss = list();
if (ss == null) return null;
------解决思路----------------------
每个盘下面都有个
System Volume Information
这个文件,是系统文件
受保护的
访问不了
------解决思路----------------------
------解决思路----------------------
如果不去掉运行也是有问题的,之所以你看不到是因为文件太多了,把console占满了,你可以进行重定向看看,肯定有空指针的