File类

在变量、数组、对象和集合中存储的数据是暂时存在的,一旦程序结束它们就会丢失。为了能够永久地保存程序创建的数据,需要将其保存到磁盘文件中,这样就可以在其他程序中使用它们。Java 的 I/O(输入/输出)技术可以将数据保存到文本文件和二进制文件中, 以达到永久保存数据的要求。


学习目标

本章首先从基础的流概念、流的分类、系统流的使用开始介绍,进而介绍如何操作文件、读取文件和写入文件。掌握 Java 中 I/O 处理技术能够提高读者对数据的处理能力。

File类

  • Java里万物皆对象
  • 文件的两种表现形式:
    • 文件夹directory
    • 普通文件file
  • 文件属性:
    • 文件名
    • 文件大小
    • 存放路径
  • 文件方法:File类中没有修改操作

File类

创建文件

  • 创建文本文件或者创建文件夹或者多级文件夹

    • .createNewFile():创建单个文本文件(若文本文件已经存在则不创建)
    • .mkdir():创建单个文件夹
    • .mkdirs():创建多个文件夹

    代码演示:对象.createNewFile()/.mkdir()/.mkdirs()

import java.io.File;
import java.io.IOException;
public class FDemo {
    public static void main(String[] args)throws Exception {
        File file1 = new File("C:\\Users\\chai\\Desktop\\cdg.txt");
        //创建一个新文件
        boolean file11=file1.createNewFile();//存在同名文件就不创建
        System.out.println(file11?"创建成功":"创建失败");
        
        //创建一个文件夹
        File file12 = new File("C:\\Users\\chai\\Desktop\\cdg");
        boolean file2=file12.mkdir();//存在同名文件夹就不创建
        System.out.println(file2?"创建成功":"创建失败");
       
        //创建多级文件夹
        File file13 = new File("C:\\Users\\chai\\Desktop\\cdg\\web\\html\\tag");
        boolean file3=file13.mkdirs();//存在同名文件夹就不创建
        System.out.println(file3?"创建成功":"创建失败");
        throw new IOException("");
    }
}

删除文件

  • .delete
import java.io.File;

public class FDemo01 {
    public static void main(String[] args) {
        File file1 = new File("C:\\Users\\chai\\Desktop\\cdg.txt");
        file1.createNewFile();//存在同名文件就不创建
        boolean file11 = file1.delete();
        System.out.println(file11?"删除成功":"未删除");
    }
}

查询文件

  • .exists:判断某个路径的文件是否存在

    import java.io.File;
    public class FDemo02 {
        public static void main(String[] args) throws Exception {
            File file1 = new File("C:\\Users\\chai\\Desktop\\cdg.txt");
            file1.createNewFile();//存在同名文件就不创建
            boolean file11=file1.exists();
            System.out.println(file11?"文件已经存在,不用创建":"文件未存在,需要创建");
        }
    }
    
  • .length:获取文件大小

    import java.io.File;
    public class FDemo02 {
        public static void main(String[] args) throws Exception {
            File file1 = new File("C:\\Users\\chai\\Desktop\\cdg.txt");
            file1.createNewFile();//存在同名文件就不创建
            long file12=file1.length();
            System.out.println(file12);
        }
    }
    
  • .getName:返回此路径下的文件名

    import java.io.File;
    public class FDemo02 {
        public static void main(String[] args) throws Exception {
            File file1 = new File("C:\\Users\\chai\\Desktop\\cdg.txt");
            file1.createNewFile();//存在同名文件就不创建
            System.out.println("Name"+file1.getName(););
        }
    }
    
  • .getPath:返回此文件名的路径的字符串形式

    import java.io.File;
    public class FDemo02 {
        public static void main(String[] args) throws Exception {
            File file1 = new File("C:\\Users\\chai\\Desktop\\cdg.txt");
            file1.createNewFile();//存在同名文件就不创建
            System.out.println("Path"+file1.getPath(););
        }
    }
    

    递归:自己调用自己

    • isDirectory():判断这个文件是否为文件夹

    • listFiles():返回一个包含所有文件抽象路径的数组

    • 通过递归扫描指定文件夹下的所有文件

      import java.io.File;
      /*
          通过递归扫描抽象路径下的所有文件
       */
      public class FDemo03 {
          public static void main(String[] args) {
              FDemo03.showFile("C:\\Users\\chai\\Desktop");
          }
          //查看文件目录下的所有文件
          public static void showFile(String pathname){
              File file1 = new File(pathname);
              //判断文件是否是文件夹
              boolean file11=file1.isDirectory();
              //选择某个文件夹下所有文件
              if(file11){ //是文件夹
                  File[] file12=file1.listFiles();
                  for (File filedetail:file12) {
                      boolean file13=filedetail.isDirectory();
                      if(file13){判断是否为文件夹
                          showFile(filedetail.getPath());
                      }else{
                          System.out.println("普通文件"+filedetail.getPath());
                      }
                  }
              }else{//不是文件夹
                  //获取文件路径
                  System.out.println("文件路径:"+file1.getPath());
              }
          }
      }
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值