Java架构师之旅(三十四 基础IO流)

夜光序言:

Live your own story, others don't need you~~

过好自己吧 别人的故事不需要你了~~

 

Java架构师之旅(三十四 基础IO流)

 

 

 

 

正文:

我们来看一下处理流:增强功能,提供性能,节点流之上

1、缓冲流

2、针对字节流的处理流我们可以称为:字节处理流

BufferedInputStream

BufferedOutputStream

 

3、字符处理流

BufferedReader

BufferedWriter

Java架构师之旅(三十四 基础IO流)

Java架构师之旅(三十四 基础IO流)

package com.Genius.buffered;

 

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.Reader;

import java.io.Writer;

 

public class BufferedCharDemo {

 

public static void main(String[] args) {

// 夜光:我们这里做一下修改嗯

// 创建源,仅限于字符的纯文本

File src = new File("E:/Genius/parent/test/Demo04.txt");

File dest = new File("E:/Genius/parent/test/Char.txt");

        Reader reader = null;

        Writer wr = null;

 

       try {

//下面这个就是加入了缓冲区

   reader = new  BufferedReader(new FileReader(src));

   wr = new BufferedWriter(new FileWriter(dest));

   

   String line = null;

   while(null!=(line=reader.readLine())){

   

   }

   

   

   } catch (FileNotFoundException e) {

 

   e.printStackTrace();

   } catch (IOException e) {

 

   e.printStackTrace();

   }

 

}

 

}

 

 

我们需要处理一个乱码问题,这个问题很常见~~

1、

编码:字符 ---编码字符集→二进制

解码:二进制 ---解码字符集→字符

 

2、乱码

我们可以发现问题原因有两点

 

 

  • 编码与解码的字符集不统一
  • 字节缺少,长度丢失

 

Java架构师之旅(三十四 基础IO流)

Java架构师之旅(三十四 基础IO流)

Java架构师之旅(三十四 基础IO流)

Java架构师之旅(三十四 基础IO流)

编码与解码字符集必须相同,否则乱码~~

我们可以底层使用字节流

Java架构师之旅(三十四 基础IO流)

Java架构师之旅(三十四 基础IO流)

Java架构师之旅(三十四 基础IO流)

Java架构师之旅(三十四 基础IO流)

这里有一段代码很重要:

BufferedReader br = new BufferedReader(

     new InputStreamReader(

      new FileInputStream(

      new File("E:/Genius/parent/test/Demo05.txt")),"utf-8")

);

"utf-8"这个很重要~~