Java基础-IO流-文件内容读写

Java工程师知识树 / Java基础



字节流与字符流操作文件的读写的方式
  • 字节流文件操作: 主要用于读取图片,MP3,AVI视频等文件。
  • 字符流文件操作: 主要用于读取处理纯文本数据。
  • 缓冲流操作文件的读取和写入
  • 使用nio读写文件
字节流操作文件的读取和写入:

字节流文件操作: 主要用于读取图片,MP3,AVI视频等文件。
使用InputStream与OutputStream的子类实现为:FileInputStream与FileOutputStream。

字节流向文件中写入数据(字节流FileOutputStream )

public static void testFileOutputStream() {
    try (FileOutputStream fileOutputStream = new FileOutputStream("E:\\document\\io\\d.txt");
    ){

        String str = "FileOutputStream测试数据";
        fileOutputStream.write(str.getBytes());

        String str2 = "\r\n";
        fileOutputStream.write(str2.getBytes());

        String str3 = "FileOutputStream测试再次添加数据";
        fileOutputStream.write(str3.getBytes());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

字节流从文件的读取(字节流FileInputStream)

//  read()
public static void testFileInputStream() {

    try (FileInputStream fileOutputStream = new FileInputStream("E:\\document\\io\\d.txt");// 内容:FileOutputStream测试数据\r\nFileOutputStream测试再次添加数据
    ){
        // read()
       int read1 =  fileOutputStream.read();
        System.out.println((char) read1);
       int read2 =  fileOutputStream.read();
        System.out.println((char) read2);
    } catch (IOException e) {
        e.printStackTrace();
    }
}
// read(byte b[])  new String(arr)
public static void testFileInputStreamReadArr() {

    try (FileInputStream fileOutputStream = new FileInputStream("E:\\document\\io\\d.txt");// 内容:FileOutputStream测试数据\r\nFileOutputStream测试再次添加数据
    ){
        // read(byte b[])
        byte[] arr = new byte[2048];
        while ((fileOutputStream.read(arr)) != -1) {
            System.out.println(new String(arr));
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
}
// read(byte b[])  new String(arr,0,len)
public static void testFileInputStreamReadArrLength() {
    try (FileInputStream fileOutputStream = new FileInputStream("E:\\document\\io\\d.txt");// 内容:FileOutputStream测试数据\r\nFileOutputStream测试再次添加数据
    ){
        // read(byte b[])
        byte[] arr = new byte[2048];
        int len ;
        while (( len = fileOutputStream.read(arr)) != -1) {
            System.out.println(new String(arr,0,len));
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
}

打印结果:


结论:使用// read(byte b[]) new String(arr,0,len)

字符流操作文件的读取和写入:

字符流文件操作: 主要用于读取处理纯文本数据。
使用Reader与Writer的子类实现为:FileReader与FileWriter

字符流向文件中写入数据(字符流FileWriter )

 public static void testFileWriter() {
    try (FileWriter fileWriter = new FileWriter("E:\\document\\io\\e.txt");
    ){

        String str = "FileWriter测试数据";
        fileWriter.write(str);

        String str2 = "\r\n";
        fileWriter.write(str2);

        String str3 = "FileWriter测试再次添加数据";
        fileWriter.write(str3);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

字符流从文件的读取(字符流FileReader)

// read()
public static void testFileReader() {

    try (FileReader fileReader = new FileReader("E:\\document\\io\\e.txt");// 内容:FileWriter测试数据\r\nFileWriter测试再次添加数据
    ){
        // read()
       int read1 =  fileReader.read();
        System.out.println((char) read1);//F
       int read2 =  fileReader.read();
        System.out.println((char) read2);//i
    } catch (IOException e) {
        e.printStackTrace();
    }
}

// read(char cbuf[])  new String(arr)
public static void testFileReaderArr() {
    try (FileReader fileReader = new FileReader("E:\\document\\io\\e.txt");// 内容:FileWriter测试数据\r\nFileWriter测试再次添加数据
    ){
        // read(byte b[])
        char[] arr = new char[2048];
        while ((fileReader.read(arr)) != -1) {
            System.out.println(new String(arr));
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

// read(char cbuf[])  new String(arr,0,len)
public static void testFileReaderArrLength() {
    try (FileReader fileReader = new FileReader("E:\\document\\io\\e.txt");// 内容:FileWriter测试数据\r\nFileWriter测试再次添加数据
    ){
        // read(byte b[])
        char[] arr = new char[2048];
        int len ;
        while (( len = fileReader.read(arr)) != -1) {
            System.out.println(new String(arr,0,len));
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

打印结果:


结论:使用// read(char cbuf[]) new String(arr,0,len)

缓冲流操作文件的读取和写入
BufferedOutputStream与BufferedInputStream组合写入与读取

步骤:

  1. FileOutputStream对象;
  2. new BufferedOutputStream(FileOutputStream对象)

BufferedOutputStream向文件中写数据

public static void testBufferedOutputStream() {
    try (FileOutputStream fw = new FileOutputStream("E:\\document\\io\\h.txt");
         BufferedOutputStream bis = new BufferedOutputStream(fw);
    ){
        bis.write("testByBufferedOutputStream测试文本".getBytes());
        bis.write("\r\n".getBytes());
        bis.write("testByBufferedOutputStream测试文本再添加".getBytes());
        bis.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

BufferedInputStream从文件中读取数据。

步骤:

  1. FileInputStream 对象;
  2. new BufferedInputStream(FileInputStream 对象)
public static void testBufferedInputStream() {
    try (FileInputStream fis = new FileInputStream("E:\\document\\io\\h.txt");
         BufferedInputStream bis = new BufferedInputStream(fis)
    ) {
        int len ;
        byte[] arr = new byte[1024];
        while ((len = bis.read(arr)) != -1) {
            System.out.println(new String(arr, 0, len));
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
BufferedWriter与BufferedReader组合写入与读取

BufferedWriter向文件中写数据

步骤:

  1. FileWriter 对象;
  2. new BufferedWriter(FileWriter 对象)
public static void testByBufferedWriter() {
    try (FileWriter fw = new FileWriter("E:\\document\\io\\f.txt", true);
         BufferedWriter bw = new BufferedWriter(fw);
    ){
        bw.write("testByBufferedReader测试文本");
        bw.write("\r\n");
        bw.write("testByBufferedReader测试文本再添加");
        bw.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

BufferedReader从文件中读取数据。

步骤:

  1. FileReader 对象;
  2. new BufferedReader(FileReader 对象)
public static void testByBufferedReader() {
    try (FileReader fileReader = new FileReader("E:\\document\\io\\f.txt");
         BufferedReader bufferedReader = new BufferedReader(fileReader)
    ) {
        String read;
        while ((read = bufferedReader.readLine()) != null) {
            System.out.println(read);
        }
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

注:小文件推荐使用缓存输入输出流操作文件内容。大文件推荐使用NIO操作文件内容

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hughjin

动力动力动力动力动力动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值