字符输入转换流
- 字符输入转换流:InputStreamReader,可以把原始的字节流按照指定编码转换成字符输入流。
构造器 | 说明 |
public InputStreamReader(InputStream is) | 可以把原始的字节流按照代码默认编码转换成字符输入流。几乎不用,与默认的FileReader一样。 |
public InputStreamReader(InputStream is , String charset) | 可以把原始的字节流按照指定编码转换成字符输入流,这样字符流中的字符就不乱码了(重点) |
import java.io.*;
public class InputStreamReaderDemo1 {
public static void main(String[] args) throws Exception {
InputStream is = new FileInputStream("file-io-app\\src\\data.txt");
//把原始字节流转换成字符输入流
Reader isr = new InputStreamReader(is,"UTF-8");//以指定的UTF-8编码转换成字符输入流,解决了乱码问题
BufferedReader br = new BufferedReader(isr);
String line;
while((line = br.readLine())!=null){
System.out.println(line);
}
}
}
字符输出转换流
- 字符输入转换流:OutputStreamWriter,可以把字节输出流按照指定编码转换成字符输出流。
构造器 | 说明 |
public OutputStreamWriter(OutputStream os) | 可以把原始的字节输出流按照代码默认编码转换成字符输出流。几乎不用。 |
public OutputstreamWriter(OutputStream os,String charset) | 可以把原始的字节输出流按照指定编码转换成字符输出流(重点) |
import java.io.*;
public class OutputStreamWriterDemo1 {
public static void main(String[] args) throws Exception {
//定义一个字节输出流
OutputStream os = new FileOutputStream("D:\\java_projects\\itheima_code\\file-io-app\\src\\data.txt");
//把原始的字节输出流转换成字符输出流
Writer osw = new OutputStreamWriter(os,"GBK");//以GBK的方式写出去,最后会乱码,默认是utf-8
//把低级的字符输出流包装成高级的缓冲字符输出流
BufferedWriter bw = new BufferedWriter(osw);
bw.write("我爱中国1!");
bw.write("我爱中国2!");
bw.write("我爱中国3!");
bw.close();
}
}