Java文件系统爬虫 - 奇怪的结果是文件数和空文件的荒谬率

时间:2012-11-20 14:43:58

标签: java windows filesystems

我正在玩“概率和统计”课程的一些功课,一些关于磁盘片段大小和效率的内容。

我编写了简单的文件搜寻器来收集数据

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全局变量或者是什么。

请有人澄清这个问题吗?

0 个答案:

没有答案