Java中的IO处理(高级流)

1 什么是高级流?

在 Java 中,IO 流中最基本的是 FileOutputStream,FileInputStream,FileReader,FileWriter,这些流相对来说比较慢,在 Java 中提供了更加强大流处理,缓冲流、转换流

2 代码实践

2.1 字节缓冲流

BufferedInputStream 和 BufferedOutputStream,缓冲区大小 8192 字节(8KB)

package cn.edu.njust.iostreambuffer;

import java.io.*;

public class BufferedStreamDemo01 {
    public static void main(String[] args) throws Exception {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("./src/main/resources/files/buffer01.txt"));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("./src/main/resources/files/copy_buffer01.txt"));

        int code;
        while((code = bis.read()) != -1) {
            bos.write(code);
        }

        bos.close();
        bis.close();
        
    }
}

2.2 字符缓冲流

package cn.edu.njust.iostreambuffer;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class BufferedStreamDemo02 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("./src/main/resources/files/buffer02.txt"));

        // readLine() BufferedReader中特有的方法
        String line = br.readLine();
        System.out.println(line);

        // 这里的判断条件是 null
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }

        br.close();

    }
}
package cn.edu.njust.iostreambuffer;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedStreamDemo03 {
    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new FileWriter("./src/main/resources/files/buffer03.txt"));

        String str = "事情没有做成的人老有这类根据不充分的信念;我们对采摘不到的葡萄,不但想象它酸,也很可能想象它是分外地甜。";
        bw.write(str);
        // 特有的换行
        bw.newLine();
        bw.write(str);

        bw.close();
    }
}

2.3 转换流

package cn.edu.njust.iostream;

import java.io.*;
import java.nio.charset.Charset;

/**
 * 将本地的一个GBK编码的文件转换成UTF-8编码的文件
 * 体验转换流的使用
 */
public class ConvertStreamDemo01 {
    public static void main(String[] args) throws Exception {
        /*
        * 这是JDK11之前的方式
        * JDK11之后,有新的替代方案
        * */
        // 输入流,将字节转换为字符
        InputStreamReader isr = new InputStreamReader(new FileInputStream("./src/main/resources/files/转换流GBK.txt"),"GBK");
        // 输出流,将字符转换为字节
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("./src/main/resources/files/GBK_to_UTF-8.txt"),"UTF-8");
        int code;
        while ((code = isr.read()) != -1) {
            osw.write(code);
        }
        osw.close();
        isr.close();

        /*
        * JDK11之后的写法
        *
        * */
        FileReader fr = new FileReader("./src/main/resources/files/转换流GBK.txt", Charset.forName("GBK"));
        FileWriter fw = new FileWriter("./src/main/resources/files/GBKtoUTF-8.txt");

        int code1;
        while ((code1 = fr.read()) != -1) {
            fw.write(code1);
        }
        fw.close();
        fr.close();
    }
}

3 常用方法汇总

3.1 字节缓冲流

和基本流的使用方法基本一致

3.2 字符缓冲流

有两个特有的方法

方法解释
public String readLine()一次读一行
public void newLine()提供一个换行,避免不同炒作系统的换行符不同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

拜见老天師

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值