1, 转换流
1. 输入字节的转换流: InputStreamReader 是字节流转为字符流的桥梁, 可以把输入字节流转换为输入字符流
2. 输出字节流的转换流: OutputStreamWriter 是字符流通向字节流的桥梁 (相对于数据来说的); 可以把输出字节流转换为输出字符流
2, 转换流的作用
1. 如果目前获取的是一个字节流需要转换为字符流, 这个时候就可以使用转换流. 字节流 ----> 字符流
2. 使用转换流可以指定编码进行读写文件
3, 实例
- package com.dhb.file;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- /**
- * @author DSHORE / 2018-7-20
- *
- */
- public class Demo27 {
- public static void main(String[] args) throws IOException {
- //readTest();
- //writerTest();
- //writerTest2();
- readTest2();
- }
- // 使用输入字节流色转换流指定编码读取文件
- public static void readTest2() throws IOException{
- File file=new File("F:\\a.txt");
- FileInputStream fileInputStream=new FileInputStream(file);
- InputStreamReader inputStreamReader=new InputStreamReader(fileInputStream,"utf-8");
- char[] buf=new char[1024];
- int length=0;
- while((length=inputStreamReader.read(buf))!=-1){
- System.out.println(new String(buf,0,length));
- }
- }
- // 使用输出字节流转换流指定编码
- public static void writerTest2() throws FileNotFoundException, IOException{
- File file=new File("F:\\a.txt");
- // 建立数据的输出通道
- FileOutputStream fileOutputStream=new FileOutputStream(file);
- // 可以把输出字节流转换为输出字符流
- OutputStreamWriter outputStreamWriter=new OutputStreamWriter(fileOutputStream, "utf-8");
- outputStreamWriter.write("你好吗!");
- // 关闭资源
- outputStreamWriter.close();
- }
- //
- public static void writerTest() throws FileNotFoundException, IOException{
- File file=new File("F:\\a.txt");
- // 建立数据的输出通道
- FileOutputStream fileOutputStream=new FileOutputStream(file,true);//true 的作用: 在文件的原有数据的末尾继续添加数据; 如果不写 true, 原有的数据将被现在要写进去的数据替代掉.
- // 可以把输出字节流转换为输出字符流
- OutputStreamWriter outputStreamWriter=new OutputStreamWriter(fileOutputStream);
- outputStreamWriter.write("你好吗!");
- // 关闭资源
- outputStreamWriter.close();
- }
- public static void readTest() throws IOException{
- InputStream in=System.in;// 获取标准的输入流
- //System.out.println("读到的字符:"+(char)in.read());
- // 把字节流转换为字符流
- InputStreamReader inputStreamReader=new InputStreamReader(in);
- // 使用字符缓冲流
- BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
- String line=null;
- while((line=bufferedReader.readLine())!=null){
- System.out.println("内容:"+line);
- }
- }
- }
来源: http://www.bubuko.com/infodetail-2693587.html