File类的学习过程中出现的问题及解决方法

这篇博客介绍了如何使用Java的File类进行文件和目录的操作,包括创建多级目录、创建文件、删除文件、查找指定后缀的文件、遍历目录以及递归删除文件夹。通过示例代码展示了File类的关键方法,如mkdirs(), createNewFile(), delete(), listFiles()等,并解释了endsWith()方法用于判断文件后缀。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 利用File构造器,new 一个文件目录file
1)在其中创建多个文件和目录,测试自己学过的File类的方法
2)手动编写方法,实现删除file中指定文件的操作
​
2. 判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
​
3. 遍历指定目录所有文件名称,包括子文件目录中的文件(注意这句话,经典递归方法,不知道思路的直接问)。
​
4. 创建一个与a.txt文件同目录下的另外一个文件b.txt
​
5.操作D盘下的my.txt文件
1)  判断my.txt文件是否存在
2)  若存在则删除;若不存在则创建
​
6.File类的作用是什么?它是一种流吗?
​
7.使用File类删除某个文件夹(例如D盘下的temp文件夹)下的所有文件和文件夹:
1)  判断temp文件夹下的文件类型,如果是文件则直接删除
2)  如果是文件夹则获取该文件夹下的子文件和文件夹
3)  使用递归的方式删除所有temp文件夹下的文件和文件夹(可参考3题)
1. 利用File构造器,new 一个文件目录file
1)在其中创建多个文件和目录,测试自己学过的File类的方法
2)手动编写方法,实现删除file中指定文件的操作*/
1.1代码:
package com.B.IOStream_14.FileDemo.Ask;
​
import java.io.File;
import java.io.IOException;
​
public class FileA1 {
    public static void main(String[] args) throws IOException {
//创建对象  、文件
        File f1 = new File("E:\\JavaDemo\\Demo03\\Web");
        System.out.println(f1.mkdirs()); //创建多级目录
        File f2 = new File("E:\\JavaDemo\\Demo04");
        System.out.println(f2.mkdir()); //创建单级目录
        File f3 = new File("E:\\JavaDemo\\Demo04\\今天周五很开心.txt");
        System.out.println(f3.createNewFile());  //创建文件
        File f4 = new File("E:\\JavaDemo\\Demo04\\明天周六更开心.txt");
        System.out.println(f4.createNewFile());  //创建文件
         File f5 = new File("E:\\JavaDemo\\Demo04\\后天周日也开心.txt");
        System.out.println(f5.createNewFile());  //创建文件
        System.out.println("-----------");
​
//      删除文件f5
        f5.delete();
​
        //根据给定的路径创建一个File对象
        File file = new File("E:\\JavaDemo");
//调用方法
        textFile(file);
//        输出文件路径
        System.out.println(file);
    }
​
    //        编写方法,实现删除file中指定文件的操作
    public static void textFile(File file) {
//        file对象中的文件存储到File文件数组中
        File[] fileArrary = file.listFiles();
        if (fileArrary != null) { //增加判断语句非空,增加健壮性
            for (File f : fileArrary) {  //增强for循环遍历集合,第一个for删除内容
                //判断该文件是否是文件目录 是递归 否删除
                if (f.isDirectory()) {
                    //是:递归调用
                    textFile(f);
                } else
                    //不是:获取绝对路径输出在控制台
                    System.out.println(f.getAbsoluteFile());
            }
        }
​
​
    }
}
运行如下:

 运行时发现未能输出其他文件,debug调试时是有这些内容有出现但并未输出,

创建文件:

 删除文件:

  1. 判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称

    代码:

    package com.B.IOStream_14.FileDemo.Ask;
    ​
    import java.io.File;
    import java.io.IOException;
    ​
    //2. 判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
    public class FileA2 {
        public static void main(String[] args) throws IOException {
            //1.创建一个当前文件所在的路径
            File file = new File("E:\\JavaDemo\\Demo04");
    ​
            File f1 = new File("E:\\JavaDemo\\Demo04\\买了大橘大利娃衣真开心.txt");
            System.out.println(f1.createNewFile());  //创建文件
            File f2 = new File("E:\\JavaDemo\\Demo04\\没钱了QAQ.txt");
            System.out.println(f2.createNewFile());  //创建文件
            File f3 = new File("E:\\JavaDemo\\Demo04\\缪拉宝宝.jpg");
            System.out.println(f3.createNewFile());  //创建文件
    ​
            //2.用当前目录下的文件名存放到字符数组当中
            String[] fileNames = file.list();
            for (String fileName : fileNames) {
                //Java endsWith() 方法
                if (fileName.endsWith(".jpg")) {
                    System.out.println(fileName);
                }
            }
    //endsWith() 方法用于测试字符串是否以指定的后缀结束。
    //语法
    //public boolean endsWith(String suffix)
    //参数
    //suffix -- 指定的后缀。
    //返回值
    //如果参数表示的字符序列是此对象表示的字符序列的后缀,则返回 true;否则返回 false。注意,如果参数是空字符串,或者等于此 String 对象(用 equals(Object) 方法确定),则结果为 true。
    ​
    ​
        }
    }

    拓展:

    引入了Java endsWith() 方法


    endsWith() 方法用于测试字符串是否以指定的后缀结束。

    语法

    public boolean endsWith(String suffix)

    参数

    • suffix -- 指定的后缀。

    • 如:

      for (String fileName : fileNames) {
          //Java endsWith() 方法
          if (fileName.endsWith(".jpg")) {
              System.out.println(fileName);
          }
      }

    返回值

    如果参数表示的字符序列是此对象表示的字符序列的后缀,则返回 true;否则返回 false。注意,如果参数是空字符串,或者等于此 String 对象(用 equals(Object) 方法确定),则结果为 true。

    运行:

     

    1. 遍历指定目录所有文件名称,包括子文件目录中的文件(注意这句话,经典递归方法,不知道思路的直接问)。

      代码:

      package com.B.IOStream_14.FileDemo.Ask;
      ​
      import java.io.File;
      import java.io.IOException;
      //3.遍历指定目录所有文件名称,包括子文件目录中的文件(注意这句话,经典递归方法)
      public class FileA3 {
          public static void main(String[] args) throws IOException {
              //1.创建一个当前文件所在的路径
              File file = new File("E:\\JavaDemo");
      //调用方法
                  textFile(file);
                  System.out.println(file);
              }
      ​
              //        编写方法,实现删除file中指定文件的操作
              public static void textFile(File file) {
      //        file对象中的文件存储到File文件数组中
                  File[] fileArrary = file.listFiles();
                  if (fileArrary != null) { //增加判断语句非空,增加健壮性
                      for (File f : fileArrary) {  //增强for循环遍历集合,第一个for删除内容
                          //判断该文件是否是文件目录 是递归 否删除
                          if (f.isDirectory()) {
                              //是:递归调用
                              textFile(f);
                          } else
                              //不是:获取绝对路径输出在控制台
                              System.out.println(f.getAbsoluteFile());
                      }
                  }
      ​
              }
      }

    运行:

     

  2. 6.File类的作用是什么?它是一种流吗?

    File类的作用是实现java与文件数据交互的类,不是流.

    7.使用File类删除某个文件夹(例如D盘下的temp文件夹)下的所有文件和文件夹: 1) 判断temp文件夹下的文件类型,如果是文件则直接删除 2) 如果是文件夹则获取该文件夹下的子文件和文件夹 3) 使用递归的方式删除所有temp文件夹下的文件和文件夹(可参考3题)

package com.B.IOStream_14.FileDemo.Ask;
​
import java.io.File;
import java.io.IOException;
​
//7.使用File类删除某个文件夹(例如D盘下的temp文件夹)下的所有文件和文件夹:
//1)   判断temp文件夹下的文件类型,如果是文件则直接删除
//2)   如果是文件夹则获取该文件夹下的子文件和文件夹
//3)   使用递归的方式删除所有temp文件夹下的文件和文件夹(可参考3题)
public class FileA7 {
    public static void main(String[] args) throws IOException {
        //1.创建一个当前文件所在的路径
        File file = new File("D:\\temp");
        System.out.println(file.mkdir());
//        创建文件
        File f3 = new File("D:\\temp\\今天周五很开心.txt");
        System.out.println(f3.createNewFile());  //创建文件
        File f4 = new File("D:\\temp\\明天周六更开心.txt");
        System.out.println(f4.createNewFile());  //创建文件
        File f5 = new File("D:\\temp\\后天周日也开心.txt");
        System.out.println(f5.createNewFile());  //创建文件
        System.out.println("-----------");
//调用方法
        textFile(file);
        System.out.println(file);
        System.out.println("-----------");
​
​
        file.delete();
        System.out.println(file);
    }
​
    //        编写方法,实现删除file中指定文件的操作
    public static void textFile(File file) {
//        file对象中的文件存储到File文件数组中
        File[] fileArrary = file.listFiles();
        if (fileArrary != null) { //增加判断语句非空,增加健壮性
            for (File f : fileArrary) {  //增强for循环遍历集合,第一个for删除内容
                //判断该文件是否是文件目录 是递归 否删除
                if (f.isDirectory()) {
                    //是:递归调用
                    textFile(f);
                } else
                    //不是:获取绝对路径输出在控制台
                    System.out.println(f.getAbsoluteFile());
            }
        }
​
    }
}

创建文件目录temp和文件内容:

执行删除并打印:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值