我正在玩“概率和统计”课程的一些功课,一些关于磁盘片段大小和效率的内容。
我编写了简单的文件搜寻器来收集数据
public static void addTree(File file, Collection<File> all) {
File[] children = file.listFiles();
if (children != null) {
for (File child : children) {
addTree(child, all);
}
}else{
all.add(file);
}
}
public static void main(String[] args) {
Collection<File> all = new ArrayList<File>();
//build file list
System.out.println("COLLECTING");
addTree(new File("."), all);
//result file
try {
//result file stream
FileWriter fstream = null;
fstream = new FileWriter("result.txt");
//result file writer
BufferedWriter out = new BufferedWriter(fstream);
System.out.println("SAVING STARTED");
//loop - find size and extension (lowercase)
Iterator itr = all.iterator();
while(itr.hasNext()){
//get file
File tested = (File) itr.next();
//get ext
String[] splitted = tested.getName().split("\\.");
String ext = splitted[splitted.length-1];
//get size
long size = tested.length();
//put into file
//if(size!=0){
out.write(size+" "+ext);
out.newLine();
//}
}
//close file / save
out.close();
}catch(IOException ex){}
}
我有两个问题: 1)扫描我的D:/后,它显示爬虫发现了大约480k文件,但系统声称有大约507k文件。好吧,我可能隐藏文件或类似的东西。 但是在扫描C:/得分有点相反之后 - 爬虫发现229k,窗户声称227k。这对我来说有点难以理解,怎么可能发生这样的事情。
2)如你所见
//if(size!=0){
out.write(size+" "+ext);
out.newLine();
//}
crawler获取所有文件(即使是零大小的文件),并且它出现了,在我的D:/(不是操作系统分区 - 只有应用程序文件 - 没有系统文件相关)上只有大约104k非零文件超出507k,什么在我看来,80%的文件完全没有内容,这是荒谬的废话。我明白了,有时需要创建文件供以后使用,但这看起来像有人误解了文件名作为OS全局变量或者是什么。
请有人澄清这个问题吗?