File类、递归、IO流、字节流、字符流

File类的概述

java.io.File 类是用来表示文件或者文件夹路径,可以用于对文件和文件夹的创建、查找和删除等操作。

File类的构造方法

  • public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。

  • public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。

  • public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。

  • 注意:

    • 创建File对象时,如果传入的文件或者文件夹路径不存在,依然不影响File对象的创建

File类常用方法

  • 绝对路径:从盘符开始的路径,这是一个完整的路径。

  • 相对路径相对于项目目录的路径,这是一个便捷的路径,开发中经常使用

举例: 文件在G:\CSDN\aaa\a.txt

public class Test {
    public static void main(String[] args) {
        // 绝对路径
        File f1 = new File("G:\\CSDN\\cccc\a.txt");
        // 相对路径
        File f2 = new File("cccc\\a.txt");
        System.out.println(f1.length()+","+f2.length());// 6,6
    }
}

获取功能的方法

  • public String getAbsolutePath() :返回此File的绝对路径名字符串。

  • public String getPath() :将此File转换为路径名字符串。 构造路径

  • public String getName() :返回由此File表示的文件或目录的名称。

  • public long length() :返回由此File表示的文件的长度。 不能获取目录的长度。

判断功能的方法

  • public boolean exists() :此File表示的文件或目录是否实际存在。

  • public boolean isDirectory() :此File表示的是否为目录。

  • public boolean isFile() :此File表示的是否为文件。

  • 注意: 如果File对象表示的路径不存在,以上三个方法的返回值都是false

创建删除功能的方法

  • public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。

  • public boolean delete() :删除由此File表示的文件或目录。 删除文件,或者删除空文件夹, 不能删除非空文件夹

  • public boolean mkdir() :创建由此File表示的目录。

  • public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。

遍历目录方法

  • public String[] list() :获取File目录中的所有子文件或子目录的名称。

  • public File[] listFiles() :获取File目录中的所有子文件或子目录的路径。

递归的概述

  • 程序中的递归: 方法自己调用自己

  • 1.递归没有出口,就会报栈内存溢出错误StackOverflowError

  • 2.出口不能太晚了,否则也会报栈内存溢出错误StackOverflowError

文件搜索

  1. 定义一个方法,用来获取CSDN下面的所有.java文件

    1. 获取文件夹下的所有子文件和子文件夹

    2. 循环遍历所有子文件和子文件夹

    3. 在循环中,判断遍历出来的是文件还是文件夹:

    4. 如果是文件,就判断文件名是否以.java结尾

    5. 如果是文件夹,就递归

public class Test {
    public static void main(String[] args) {
        findJavaFile(new File("CSDN"));
    }

    //定义一个方法,用来获取CSDN下面的所有.java文件
    public static void findJavaFile(File file) {
        //1.  获取文件夹下的所有子文件和子文件夹
        File[] arr = file.listFiles();

        //2.  循环遍历所有子文件和子文件夹
        if (arr != null){
            for (File f : arr) {
                //3.  在循环中,判断遍历出来的是文件还是文件夹:
                if (f.isFile() && f.getName().endsWith(".java")) {
                    //4.  如果是文件,就判断文件名是否以.java结尾
                    System.out.println(f.getAbsolutePath());
                }
                //5.  如果是文件夹,就递归
                if (f.isDirectory()){
                    findJavaFile(f);
                }
            }
        }

    }
}

IO概述

  • I : Input 输入 从其他存储设备读数据到内存中就是输入

  • O : Output 输出 从内存中写数据到其他存储设备

IO的分类

  • 按照类型分: 字节流和字符流

    • 字节流:

      • 字节输入流: 以字节为基本单位,进行读数据

      • 字节输出流: 以字节为基本单位,进行写数据

    • 字符流:

      • 字符输入流: 以字符为基本单位,进行读数据

      • 字符输出流: 以字符为基本单位,进行写数据

  • 按流向分: 输入流和输出流

  • 输入流: 读数据

    • 字节输入流: 以字节为基本单位,进行读数据

    • 字符输入流: 以字符为基本单位,进行读数据

    • 输出流: 写数据

      • 字节输出流: 以字节为基本单位,进行写数据

      • 字符输出流: 以字符为基本单位,进行写数据

IO的顶层父类

​​​​

  • 字节流:

    • 字节输入流: 顶层父类是InputStream抽象类

    • 字节输出流: 顶层父类是OutputStream抽象类

  • 字符流:

    • 字符输入流: 顶层父类是Reader抽象类

    • 字符输出流: 顶层父类是Writer抽象类

注意事项

  • utf8编码一个中文占3个字节,gbk编码一个中文占2个字节

  • idea默认编码是utf8

  • 如果存储和解析的编码不一致就会乱码

字节输出流【OutputStream】

OutputStream类的概述

  • 概述: java.io.OutputStream抽象类是表示字节输出流的所有类的父类

  • 作用:

    • 将指定的字节信息写出到目的地文件中。

    • 它定义了所有字节输出流的基本共性功能方法。(所有类都继承了OutputStream)

OutputStream类的常用方法

  • public void close() :关闭此输出流并释放与此流相关联的任何系统资源。

  • public abstract void write(int b) :写出一个字节数据到目的地文件中。

  • public void write(byte[] b):将 b.length字节写出到目的地文件中。

  • public void write(byte[] b, int off, int len) :从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。

FileOutputStream类

  • 概述: java.io.FileOutputStream类继承了OutputStream类,所以也是表示字节输出流,可以用来写出字节数据到目的地文件中.

  • 构造方法

    • public FileOutputStream(File fPath) 创建一个字节输出流对象,关联的文件通过参数来指定

    • public FileOutputStream(String path) 创建一个字节输出流对象,关联的文件通过参数来指定

    • 注意:

      • 如果关联的文件不存在,就会自动创建一个新的空文件

      • 如果关联的文件存在,就会清空源文件中的数据

  • public FileOutputStream(File path,boolean append) 创建一个字节输出流对象,关联的文件通过参数来指定

  • public FileOutputStream(String path,boolean append) 创建一个字节输出流对象,关联的文件通过参数来指定

  • 注意:

    • 如果关联的文件不存在,就会自动创建一个新的空文件

    • 如果关联的文件存在,并且第二个参数设置为true,就不清空源文件中的数据,否则就清空(false)

  • 字节输入流【InputStream】

  • InputStream类的概述

    概述: java.io.InputStream抽象类是表示字节输入流的所有类的超类,

    InputStream类的常用方法

  • public void close() :关闭此输入流并释放与此流相关联的任何系统资源。

  • public abstract int read(): 读一个字节。

  • public int read(byte[] b): 读一个字节数组

FileInputStream类

  • 概述: java.io.FileInputStream类继承InputStream类,也表示字节输入流,可以用来读字节数据到内存中.

  • 构造方法

    • public FileInputStream(File fPath); 创建字节输入流对象,通过参数关联数据源文件路径.

    • public FileInputStream(String path); 创建字节输入流对象,通过参数关联数据源文件路径.

- 能够使用FileReader读数据一次一个字符
     int  read() 读一个字符
- 能够使用FileReader读数据一次一个字符数组
     int  read(char[] chs) 读一个字符数组
       
- 能够说出FileWriter中关闭和刷新方法的区别
      关闭: 关闭流,刷新缓冲区,流不能再使用
      刷新: 刷新缓冲区,流可以继续使用
          
- 能够使用FileWriter写数据实现换行和追加写
    public  FileWriter(String path,boolean append)
    public  FileWriter(File path,boolean append)  
          回车换行--->"\r\n"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值