Java架构师之旅(三十四 基础IO流)
夜光序言:
Live your own story, others don't need you~~
过好自己吧 别人的故事不需要你了~~
正文:
我们来看一下处理流:增强功能,提供性能,节点流之上
1、缓冲流
2、针对字节流的处理流我们可以称为:字节处理流
BufferedInputStream
BufferedOutputStream
3、字符处理流
BufferedReader
BufferedWriter
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、乱码
我们可以发现问题原因有两点
- 编码与解码的字符集不统一
- 字节缺少,长度丢失
编码与解码字符集必须相同,否则乱码~~
我们可以底层使用字节流
这里有一段代码很重要:
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream(
new File("E:/Genius/parent/test/Demo05.txt")),"utf-8")
);
"utf-8"这个很重要~~