Java中File类如何扫描磁盘所有文件包括子目录及子目录文件

摘要:
有关详细信息,请参见代码。我在这段代码中有一个bug。扫描U盘时,我可能会报告空指针异常。我希望对虾能指出importjava.io.File;importjava.util.ArrayDeque;PublicclassFileListDemo{publicstaticvoidmain(String[]args){Filef1=newFile(“E:”);//深度搜索getPathDFS(f1);System.o

详细情况看代码吧,我这个代码有个BUG,扫描U盘的时候可能会报空指针异常,希望大虾指点下

import java.io.File;
import java.util.ArrayDeque;

public class FileListDemo {
    public static void main(String[] args) {
        File f1 = new File("E:\");
        //深度搜索
        getPathDFS(f1);
        
        System.out.println("======================");
        
        //广度搜索
        getPathBFS(f1);
    }

    private static void getPathBFS(File f1) {
        //输出第一层目录
        System.out.println(f1);
        //运用队列进行广度搜索
        ArrayDeque<File> deque = new ArrayDeque<File>();
        //第一个File实例入队
        deque.offer(f1);
        //队列为空时停止
        while(!deque.isEmpty()){
            //取队头
            File[] ff = deque.peek().listFiles();
            //出队
            deque.poll();
            for(int i=0;i<ff.length;i++){
                //如果是文件夹入队
                if(ff[i].isDirectory()){
                    System.out.println(ff[i]);
                    deque.addLast(ff[i]);
                }else{
                    System.out.println(ff[i]);
                }
            }
        }
    }

    private static void getPathDFS(File f1) {
        System.out.println(f1.getName());
        File[] file = f1.listFiles();
        for(int i=0;i<file.length;i++){
            //如果是个文件夹就继续搜索
            if(file[i].isDirectory()){
                getPathDFS(file[i]);
            }else{
                //不是文件夹就直接输出
                System.out.println(file[i]);
            }
        }
    }

}

免责声明:文章转载自《Java中File类如何扫描磁盘所有文件包括子目录及子目录文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WCF安全:通过 扩展实现用户名密码认证网络请求的超时原因下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

(一)FastDFS 高可用集群架构学习---简介

1、什么是FastDFS FastDFS 是余庆老师用c语言编写的一筐开源的分布式文件系统,充分考虑了冗余备份,负载均衡,线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS可以很容易搭建一套高性能的文件服务器集群提供文件上传下载. FastDFS实现了软件方式的RAID,可以使用廉价的IDE硬盘进行存储支持存储服务器在线扩容支持相同内容的文件只...

linux下用/proc/stat文件来计算cpu的利用率-c语言实现

proc文件系统介绍       /proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为内核与进程提供通信的接口。用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取/proc目录中的文件时,proc文件系统是动态从系统内核读出所需信息并...

12-rm 命令总结

rm remove files or directories 删除目录或文件 【语法】: rm 【选项】 【参数】 【功能介绍】        rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。       注意:使用rm命令要格外小心。因为一旦...

linux boost 安装

sudo apt-get install libboost-dev  但是,我这样安装以后,编译程序时出现了很多错误,而且都是系统文件的错误。我开始以为是我的boost库版本不对,后来换了好几个版本,都出现了同样的问题。后来,自己编译了一个boost.1.42。然后程序就顺利通过了。后来想了一下原因,可能是因为从上面的命令默认安装的boost在编译打包时没...

python文件路径分隔符的详细分析

写了挺久的python,文件分隔符的掌握肯定是必须的,但是我之前写的都是不规范的文件路径分隔符,例如‘’C:User emppython.txt’,一直都没有报过错。也不知为啥,今天查阅资料才知道自己写的都是些假的python,所以就在此记录一下。 主要是需要考虑分隔符的问题:在Windows系统下的分隔符是: (反斜杠)。 在Linux系统下的分隔符是:...

github中git bash基础命令行

今天来讲一下关于github命令行相关知识。呵呵,其实github都没太明白就把git bash摆上来当道菜。看来,我有当程序员的天赋,让我再装一会。 前提:你已经在github上已经注册了账号。 特别注意: 括号内均为提示信息 1、常用命令行工具: ①cmd ②powershell ③git bash 2、命令行常用命令(在git bash上生效,部分在...