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

详细情况看代码吧,我这个代码有个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.push(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]);
            }
        }
    }

}
时间: 2024-12-25 20:09:11

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

Java中File类的基本用法

File类的基本用法 java.io.File类:代表文件和目录.在开发中,读取文件.生成文件.删除文件.修改文件的属性时经常会用到此类. File类的常用构造方法:public File(String pathname) 以pathname为路径创建File对象,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储. 文件的创建 import java.io.File; import java.io.IOException; public class Test {

java中File类的使用

public class FileLei { public static void main(String[] args) throws IOException {        //..表示上一级目录     .表示当前所在目录        File file = new File("C:\\Users\\cdlx2016\\Desktop\\file类");        System.out.println("是否存在该文件:"+file.exists())

黑马程序员------Java中File类学习总结

Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! File类 1.用来将文件或者文件夹封装成对象,以方便对文件和文件夹进行操作. 2.File对象可以作为参数传递给流的构造函数. File对象功能: 创建和删除: 1.boolean createNewFile(): 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件. 2.boolean mkdir():创建此抽象路径名指定的目录. 3.boolean mkdirs():创建此抽象路径

java中File类

转自http://shameant.iteye.com/blog/163007 Java文件操作我个人认为重要的问题有: a:如何跨平台问题   b:文件编码问题,尤其是多语言平台情况下如何正常工作.   c:文件读写效率.操作效率   d:文件加密和文件安全   e:文件快速检索,强烈建议使用lence进行文件检索及文件管理. 以下是本人做的一些整理: 一:建立文件 File file1 = new File ("C:\\temp\\myNote.txt"); // in Windo

java中File类详解

构造函数 代码如下: public class FileDemo {     public static void main(String[] args){         //构造函数File(String pathname)         File f1 =new File("c:\\abc\\1.txt");         //File(String parent,String child)         File f2 =new File("c:\\abc&qu

Java中File类重修

IO流 概述 io流:输入输出流(input/output).流是一组有顺序的,有起点和终点的字节集合,是对各种数据传输的总称或抽象.即数据在两设备之间的传输称为流.流的本质是数据传输. InputStream:所有输入流的超类 OutputSream:所有输出流的超类 1.在指定的目录中查找文件后缀为.txt的文件 import java.io.File; //在指定的目录中查找文件 public class FindFile { public static void main(String[

java中File类getPath()、getAbsolutePath()、getCanonicalPath()区别?

简单看一下描述,例子最重要. 1.getPath(): 返回定义时的路径,(就是你写什么路径,他就返回什么路径) 2.getAbsolutePath(): 返回绝对路径,但不会处理"."和".."的情况 3.getCanonicalPath(): 返回的是规范化的绝对路径,相当于将getAbsolutePath()中的"."和".."解析成对应的正确的路径 第一个例子:(使用:".\\src\\test.txt&qu

java中File类的getPath(),getAbsolutePath(),getCanonicalPath()区别

File file = new File(".\\test.txt"); System.out.println(file.getPath()); System.out.println(file.getAbsolutePath()); System.out.println(file.getCanonicalPath()); 输出实例: .\test.txt E:\workspace\Test\.\test.txt E:\workspace\Test\test.txt getPath():

使用Java中File类批量创建文件和批量修改文件名

批量创建文件 1 int cont = 1; 2 String s = "E:\\学习资料\\Java笔记-"; 3 while(cont<100){ 4 File f = new File(s+cont+".txt"); 5 if(!f.exists()){ 6 f.createNewFile(); 7 } 8 cont++; 9 } 批量修改文件名 1 File file = new File("E:\\学习资料"); 2 String