怎么用java,遍历D盘下所有文本文件

怎么用java,遍历D盘下所有文本文件?怎么用java,遍历D盘下所有文本文件怎么用java,遍历D盘下所有文本文件

递归遍历, 百度下这个网上应该有写好的demo

import java.io.File;

public class FileTraversal {
    public static void main(String[] args) {
        File directory = new File("D:\\"); // 指定要遍历的目录
        getFile(directory);
    }

    public static void getFile(File directory) {
        File[] files = directory.listFiles(); // 获取目录下的所有文件和文件夹

        if (files != null) {
            for (File file : files) {
                if (file.isDirectory()) {
                    getFile(file); // 如果是文件夹,递归调用该方法继续遍历
                } else {
                    if (file.getName().endsWith(".txt")) { // 判断是否为文本文件
                        System.out.println(file.getName());
                    }
                }
            }
        }
    }
}

import java.io.File;
import java.io.IOException;

public class FileTraversalExample {

    public static void main(String[] args) {
        // 指定要遍历的目录路径
        String directoryPath = "D:\\";

        // 创建一个 File 对象,表示要遍历的目录
        File directory = new File(directoryPath);

        // 调用遍历方法
        traverseFiles(directory);
    }

    public static void traverseFiles(File directory) {
        // 获取目录下的所有文件和子目录
        File[] files = directory.listFiles();

        // 遍历文件和子目录
        for (File file : files) {
            // 如果是文件,则判断是否是文本文件
            if (file.isFile() && file.getName().endsWith(".txt")) {
                // 处理文本文件,这里只是简单地打印文件路径
                System.out.println(file.getAbsolutePath());
            }
            // 如果是目录,则递归调用遍历方法
            else if (file.isDirectory()) {
                traverseFiles(file);
            }
        }
    }
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/733105
  • 你也可以参考下这篇文章:java递归遍历D盘下的所有文件夹和目录
  • 同时,你还可以查看手册:java-入门 - 对Java技术的介绍,以及安装Java开发软件和使用它来创建一个简单程序的课程。- Java技术现象 提供了整个Java技术的概述。它同时讨论了Java编程语言和平台,广泛介绍了这项技术能做什么,以及它将如何使你的生活更轻松。-关于Java技术 中的内容
  • 除此之外, 这篇博客: JAVA习题大全之java期末考试复习预测题一中的 java期末考试复习预测题D 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    《JAVA语言程序设计》期末考试试题及答案4(应考必备题库)

    • 单选题

    1、下列程序段执行后的结果是(   )。

    String s = new String("abcdefg");

    for (int i=0; i<s.length(); i+=2){

        System.out.print(s.charAt(i));

    A) aceg   B) ACEG    C) abcdefg    D) abcd                                               

    2、有整型数组:int[]  x={12,35,8,7,2};,则调用方法Arrays.sort(x)后,数组x中的元素值依次是(   ).

    A) 2   7   8   12   35                       B) 12  35  8    7    2    

    C) 35  12  8    7    2                       D) 8   7   12   35   2

    3、下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt。File构造函数中正确的路径和文件名的表示是(  )。

    File f = new File(填代码处);

    file =new FileReader(f);

    in=new BufferedReader(file);

    A) "./1.txt"    B) "../my/1.txt"    C) "c:\\my\\1.txt"        D) "c:\ my\1.txt"          

    4、应用程序的main方法中有以下语句,则输出的结果是 (   )。

               String  s1=new String("abc");

            String  s2=new String("abc");

            boolean b1=s1.equals(s2);

            boolean b2=(s1==s2);           

            System.out.print(b1+"   "+b2);           

    A)true  false        B) false  true      C) true  true    D)false  false                            

    5、应用程序的main方法中有以下语句,则输出的结果是 (   )。

                  Hashtable hashtable=new Hashtable();

            hashtable.put("x","12345");

            hashtable.put("y","67890");

            hashtable.put("a","abcde");

                   System.out.println(hashtable.get("a"));      

     A) a   B) abcde    C) 12345   D) 67890                                                                                    

    6、下面语句的功能是(  )。

           RandomAccessFile  raf2 = new RandomAccessFile("1.txt","rw" );

    A)打开当前目录下的文件1.txt,既可以向文件写数据,也可以从文件读数据。               

    B)打开当前目录下的文件1.txt,但只能向文件写入数据,不能从文件读取数据。

    C)打开当前目录下的文件1.txt,但不能向文件写入数据,只能从文件读取数据。

    D) 以上说法都不对。          

    7、应用程序的main方法中有以下语句,则输出的结果是 (   )。

                  String   s="12345#aaa#bbb#67890";

                  int     n=s.indexOf("#");

              int     k=s.indexOf("#",n+1);

                  int     m=s.indexOf("#",k+1);

                  String  s2=s.substring(m+1);

                  System.out.println(s2);   

    A) 123456     B) 67890     C) aaa      D) bbb                                                 

    8、下面程序段执行后b的值是(   )。

           Integer integ =new Integer(9);

       boolean b = integ  instanceof  Object;

    A) 9     B) true     C) 1     D) false

    9、应用程序Test.java的源程序如下,在命令行键入:

                  java Test  aaa  bb  c

    回车后输出的结果是 (   )。

    public class Test {

        public static void main(String args[]) {

            int  k1=args.length;

            int  k2=args[1].length();        

            System.out.print(k1+"    "+k2);

        } 

    }

    A) 3  2       B)1  2     C) 1  3    D) 3  3                                                

    10、应用程序的main方法中有以下语句,则输出的结果是 (   )。

                   int  b[][]={{1}, {2,2}, {2,2,2}};

            int sum=0;

            for(int i=0;i<b.length;i++) {            

                for(int j=0;j<b[i].length;j++) {

                    sum*=b[i][j];

                }           

            }

            System.out.println("sum="+sum);

    A) 32     B)11     C) 2     D) 3                                                                                                      

    11、应用程序的main方法中有以下语句,则执行后输出的结果是 (   )。

    int[]  x={125,21,5,168,98};

    int  max=x[0];

    for(int i=1;i<x.length;i++){

          if(x[i]> max)

                 max =x[i];

    }

    System.out.println(max);

    A) 125     B) 5     C) 98        D) 168                                                 

    12、程序Test.java编译运行后输出的结果是(   )。

    public class Test {

        String s1="java"; 

        public static void main(String args[]) {                 

            int z=2;             

            Test t=new Test();             

            System.out.println(t.s1+z);

        } 

    A) java2     B)2     C)没有输出结果         D)java                                   

    13、应用程序的main方法中有以下语句,则输出的结果是 (   )。

                  String s1="0.5", s2="12";

           double x=Double.parseDouble(s1);

           int    y=Integer.parseInt(s2);

                 System.out.println(x+y);

    A) 12.5         B) 120.5        C) 12           D) “12.5”                                                   

    14、下面的程序创建了一个文件输出流对象,用来向文件test.txt中输出数据,假设程序当前目录下不存在文件test.txt,编译下面的程序Test.java后,将该程序运行3次,则文件test.txt 的内容是(  )。

    import java.io.*;

    public class Test {

          public static void main(String args[]) {

                 try {

                        String s="ABCDE";

                        byte b[]=s.getBytes();

                        FileOutputStream file=new FileOutputStream("test.txt",true);

                        file.write(b);           

                        file.close();

                 }

                 catch(IOException e) {

                        System.out.println(e.toString());

                 }

          }

    }

    A) ABCABC   B) ABCDE     C) Test    D) ABCDE ABCDE ABCDE          

    15、下面那些方法不是接口Collection中已声明的方法(  )?

    A)添加元素的add(Object  obj) 方法

    B)删除元素的remove(Object obj)方法

    C)得到元素个数的length()方法

    D)返回迭代器的iterator()方法,迭代器用于元素遍历

                            

    二、多选题

    1、下面main()方法的定义哪些是正确的(  )?

    A) public static void main(String args[]) {}  B) public static void main(String[]) {}

    C) public static void main(String[] args) {}  D)public static void main(String [] x) {}                     

                                              

    2、线程对象的生命周期中,通常经历下面哪些状态(     )。

    A)新建      B)运行      C)就绪      D)死亡 

                                                

    3、下面说法正确的是(   )。

    A) final 可修饰类、属性(变量)、方法。          

    B) abstract可修饰类、方法。

    C) 抽象方法只有方法头,没有方法体。           

    D) 关键字final和abstract不能同时使用。

     

    4、下面关于java中输入/输出流的说法正确的是(  )。

    A) FileInputStream与FileOutputStream类用读、写字节流。      

    B) Reader与Writer类用来读、写字符流。

    C) RandomAccessFile既可以用来读文件,也可以用来写文件。   

    D) File类用来处理与文件相关的操作。

     

    5、下面说法正确的是(  )。

    A)如果某公共接口被声明在一个源文件中,则接口必须与源文件具有相同名字。

    B)如果源文件包含import语句,则该语句必须是除空行和注释行外的第一个语句行。

    C)如果某源文件包含package语句,则该语句必须是第一个非空、非注释行。

    D)接口中的方法必定是抽象方法,但可以不用关键字abstract修饰。

                                  

    6、下面关于Java中异常处理try块的说法正确的是(    )?

    A) try块后通常应有一个catch 块,用来处理try块中抛出的异常。  

    B) catch 块后必须有finally块。

    C)可能抛出异常的方法调用应放在try块中。                     

    D)对抛出的异常的处理必须放在try块中

     

    7、下面关于进程、线程的说法正确的是(    )。

    A)进程是程序的一次动态执行过程。一个进程在其执行过程中,可以产生多个线程——多线程,形成多条执行线索。

    B)线程是比进程更小的执行单位,是在一个进程中独立的控制流,即程序内部的控制流。线程本身不能自动运行,栖身于某个进程之中,由进程启动执行。

    C)Java多线程的运行与平台相关。

    D)对于单处理器系统,多个线程分时间片获取CPU或其他系统资源来运行。对于多处理器系统,线程可以分配到多个处理器中,从而真正的并发执行多任务。

     

    8、关于BufferedReader类的readLine()方法,以下说法正确的是()。

    A)方法readLine()每次读取一行数据。                 

    B)方法readLine()每次读取一个字节。

    C)该方法可能抛出IOException异常,调用该方法时通常应将它放到try块中,并通过catch块处理异常。

    D)如果读到流的末尾,该方法返回的结果为null。

    三、程序阅读题

    1、阅读下面的程序,回答问题(u问3分,v问3分,共6分)。

            import java.awt.*;

        import javax.swing.*;

        public class T extends JFrame {

            public T ( ) {

                super("GridLayout");

                Container  con=this.getContentPane();

                con.setLayout(new GridLayout(2,3));

                con.add(new JButton("a")); 

                con.add(new JButton("b"));

                con.add(new JButton("c")); 

                con.add(new JButton("d"));

                con.add(new JButton("e"));

                con.add(new JButton("f"));

                setSize(200, 80);

                setVisible(true);

            }

            public static void main(String args[]) {

               new T();       

            }

           }

    u画图表示程序运行后的图形界面。

    v如果程序通过实现某个接口处理按钮的动作事件,则该接口名为何?接口中的方法头声明如何?

    答案:

    u

    v接口名:ActionListener

      接口中的方法:public void actionPerformed(ActionEvent e)

     

    2、阅读下面的程序,回答问题(u问3分,v问3分,共6分)。。

    import  java.util.*;

    public class T   {   

            public static void main(String args[])  {

                Set set = new TreeSet();

                set.add(new Integer(10));       

                set.add(new Integer(5));  

                set.add(new Integer(15));

                set.add(new Integer(5));  

                set.add(new Integer(10));

                System.out.println("size = " + set.size());

                Iterator   it=set.iterator();

                while(it.hasNext()){

                    System.out.print(it.next()+"   ");

                }

            }   

    }

    u程序运行后输出的结果如何?

    v说明java中的集合(Set接口)和映射(Map接口)的主要区别。

    答案:

    u

    size = 3

    5   10   15

    vSet接口是不包含重复元素的集合;Map接口将键映射到值,键可以重复,但每个键最多只能映射一个值。

     

    3、阅读下面的程序,并回答问题(u问3分,v问3分,共6分)。

    import java.io.*;

    public class Test {

        public static void main(String args[]) throws IOException {

            BufferedReader buf=new BufferedReader(

                        new InputStreamReader(System.in));       

            while(true) {

                String  str=buf.readLine();

                if(str.equals("quit"))

                    break;

                int x=Integer.parseInt(str);

                System.out.println(x*x);

            }

        } 

    }

    编译运行上面的程序:

    u从键盘输入5,回车后输出的结果如何?

    v从键盘输入quit,回车后程序执行情况如何?

    答案:

    u25

    v终止应用程序的运行。

  • 您还可以看一下 雷玉广老师的微服务系列第九季-Java中的封装、抽象类、接口和多态课程中的 Java抽象类的概念小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    使用Java代码遍历D盘下的所有文本文件可以通过递归解决。首先定义一个方法,该方法接收一个File对象作为参数,然后判断该File对象是否为文件夹。如果是文件夹,则获取文件夹下所有文件和文件夹并递归调用该方法。如果是文件,则判断该文件是否为文本文件并进行相应的操作。

    下面是实现这个过程的代码:

    import java.io.File;
    
    public class FileTraversal {
    
        public static void main(String[] args) {
            File root = new File("D:\\"); // 定义遍历的根目录
            traverse(root);
        }
    
        private static void traverse(File file) {
            if (file.isDirectory()) {
                File[] files = file.listFiles();
                if (files != null) {
                    for (File f : files) {
                        traverse(f);
                    }
                }
            } else {
                if (isTextFile(file)) {
                    // 对文本文件进行相应的操作
                    System.out.println(file.getAbsolutePath());
                }
            }
        }
    
        private static boolean isTextFile(File file) {
            String name = file.getName();
            // 判断文件扩展名是否为txt、doc、docx等文本文件的扩展名
            return name.endsWith(".txt") || name.endsWith(".doc") || name.endsWith(".docx");
        }
    }
    

    以上代码首先定义了一个FileTraversal类,其中的main方法是程序的入口。在main方法中,我们定义了一个根目录root,并调用traverse方法来遍历该目录下的所有文件。

    traverse方法是遍历文件和文件夹的核心方法。它首先判断传入的file对象是否为文件夹,如果是,则获取文件夹下的所有文件和文件夹,并递归调用traverse方法。如果file对象是文件,则调用isTextFile方法判断该文件是否为文本文件,如果是,则进行相应的操作(这里只是简单地打印文件的绝对路径)。

    isTextFile方法用于判断文件是否为文本文件。它通过判断文件的扩展名来确定文件是否为文本文件,这里只判断了一些常见的文本文件的扩展名,你可以根据实际需求修改。

    注意:在实际使用过程中,可能会遇到文件无法访问的情况,可以在遍历文件时使用try-catch来捕获异常并进行相应的处理。

    希望以上代码能够解决你的问题,如有不清楚的地方,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^