Java IO流学习——高速缓冲流

(学习资料来自三更草堂)

1.1 概述

对硬盘进行数据的读取相比于从内存中存取数据要慢的多。所以JDK为我们提供了高效缓冲流来提高我们IO流的效率。内部原理就是借助内存的缓冲区来减少硬盘IO的次数,提高性能。

1.2 分类

  • 字节流

    输入流

    BufferedInputStream

    输出流

    BufferedOutputStream

  • 字符流

    输入流

    BufferedReader

    输出流

    BufferedWriter

public BufferedInputStream(InputStream in) 
public BufferedOutputStream(OutputStream out)
public BufferedReader(Reader in) 
public BufferedWriter(Writer out)

 Java IO流学习——高速缓冲流_第1张图片

读数据: 

 

Java IO流学习——高速缓冲流_第2张图片 

1.3 特有的方法

方法 作用
BufferedReader public String readLine() throws IOException 一次读取一行数据,读到的内容不包含换行符,读到了文件末尾返回null。
BufferedWriter public void newLine() throws IOException 写入一个换行符,会根据系统变化

Java IO流学习——高速缓冲流_第3张图片

 循环读取:

Java IO流学习——高速缓冲流_第4张图片

 Java IO流学习——高速缓冲流_第5张图片

写入换行符:

Java IO流学习——高速缓冲流_第6张图片 

实现文件复制:

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new FileReader("D:\\学习笔记\\JAVA\\JavaSE进阶\\io-test\\3.txt"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\学习笔记\\JAVA\\JavaSE进阶\\io-test\\4.txt", true));

        String line;
        //一行行读
        while ((line = br.readLine()) != null) {
            bw.write(line);
            //写入换行符
            bw.newLine();
        }

        //释放资源
        br.close();
        bw.close();
    }

复制结果:

 Java IO流学习——高速缓冲流_第7张图片

 

2. 转换流

2.1 概述

如果我们需要把字节流转换成字符流,可以使用转换流来实现转换。

2.2 分类

流类型
输入流 InputStreamReader
输出流 OutputStreamWriter

2.2 转换流的使用

当我们需要把字节流转换成字符流时直接使用转换流的构造方法进行转换即可。

public InputStreamReader(InputStream in)
public InputStreamReader(InputStream in, String charsetName)
public OutputStreamWriter(OutputStream out)
public OutputStreamWriter(OutputStream out, String charsetName)

 示例:

    public static void main(String[] args) throws FileNotFoundException {
        //字节流对象
        FileInputStream fis = new FileInputStream("C:\\Users\\root\\Desktop\\test\\汉字.txt");
        FileOutputStream fos = new FileOutputStream("C:\\Users\\root\\Desktop\\test\\转换流测试.txt");

        //转换成字符流
        InputStreamReader isr = new InputStreamReader(fis);
        OutputStreamWriter osw = new OutputStreamWriter(fos);
        
    }

你可能感兴趣的:(Java学习——IO流,学习,java)