Java文件处理(一):创建文件、遍历文件夹、删除文件/文件夹 ...

打印 上一主题 下一主题

主题 974|帖子 974|积分 2922

本篇以代码为核心,在实践中自学吧年轻人~
非常好迭代作业,爱来自BUAA
File对象

要进行文件处理肯定需要File类啦。
File的实例是一个实例(?),但是可以链接到本地的文件、文件夹,并对它们进行操作。
从下面的一些示例中可以看到,同一份本地文件可以拥有多个File对象;同时,构造一个File对象时传入的文件不存在,代码并不会出错。
创建一个File对象需要传入文件路径:
  1. File f1=new File("C:\\Windows\\notepad.exe");//绝对路径
  2. File f2=new File("./data/order/qwq.txt");//相对路径
  3. //文件路径是String类:
  4. String fileName="./data/order/"+merchant.getCard()+".txt";
  5. File f3=new File(fileName);
复制代码
相对路径中.表示当前目录,..表示上级目录。
一些方法


  • 判断文件/目录是否存在:boolean exists()
判断文件是否相同

File对象有3种形式表示的路径,一种是getPath(),返回构造方法传入的路径,一种是getAbsolutePath(),返回绝对路径,一种是getCanonicalPath,它和绝对路径类似,但是返回的是规范路径。
规范路径可用于判断两个文件对象指向的文件是否相同
  1. File file1=new File(fileName1);
  2. File file2=new File(fileName2);
  3. if(file1.getCanonicalPath().equals(file2.getCanonicalPath())){
  4.         System.out.println("The same path");
  5. }
复制代码
可以看出,同一份本地文件是可以拥有多个File对象的。
在本地创建文件:


  • file.creatNewFile()
以下是完整代码:
  1. String fileName="./data/qwq.txt";//需要创建的文件路径
  2. File file=new File(fileName);
  3. File fileP=file.getParentFile();//获取当前文件所在的目录
  4. if(!fileP.exists()){//判断是否在本地存在(目录和文件通用)
  5.     fileP.mkdirs();
  6.     //创建当前File对象表示的目录,并在必要时将不存在的父目录也创建出来;
  7. }
  8. if(!file.exists()){
  9.     file.createNewFile();//在本地磁盘创建新文件
  10. }
复制代码
遍历文件夹:

使用list()或listFiles()。
listFile()可以过滤不想要的文件和文件夹。
  1. File f = new File("C:\\Windows");
  2. File[] fs1 = f.listFiles(); // 列出所有文件和子目录
  3. // 仅列出.exe文件
  4. File[] fs2 = f.listFiles(new FilenameFilter() {
  5.         public boolean accept(File dir, String name) {
  6.         return name.endsWith(".exe"); // 返回true表示接受该文件
  7.             }
  8.         });
复制代码
删除文件:
  1. public static void delete(String path) {
  2.         // 为传进来的路径参数创建一个文件对象
  3.         File file = new File(path);
  4.         // 如果目标路径是一个文件,那么直接调用delete方法删除即可
  5.         // file.delete();
  6.         // 如果是一个目录,那么必须把该目录下的所有文件和子目录全部删除,才能删除该目标目录,这里要用到递归函数
  7.         // 创建一个files数组,用来存放目标目录下所有的文件和目录的file对象
  8.         File[] files;
  9.         // 将目标目录下所有的file对象存入files数组中
  10.         files = file.listFiles();
  11.         // 循环遍历files数组
  12.         if (files != null) {
  13.             for(File temp : files){
  14.                 // 判断该temp对象是否为文件对象
  15.                 if (temp.isFile()) {
  16.                     temp.delete();
  17.                 }
  18.                 // 判断该temp对象是否为目录对象
  19.                 if (temp.isDirectory()) {
  20.                     // 将该temp目录的路径给delete方法(自己),达到递归的目的
  21.                     delete(temp.getAbsolutePath());
  22.                     // 确保该temp目录下已被清空后,删除该temp目录
  23.                     temp.delete();
  24.                 }
  25.             }
  26.         }
  27.         file.delete();
  28.     }
复制代码
⚠️删除文件前务必关闭文件的输入输出流等等,否则会导致删除失败⚠️
输入输出见下篇。
博主去赶作业了(骂骂咧咧)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

勿忘初心做自己

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表