Java学习笔记之IO(十七):转换流

来源:互联网 发布:淘宝联盟结算第三方 编辑:程序博客网 时间:2024/06/07 20:14
package com.io.g_sequence;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import org.junit.Test;/*转换流:输入字节流的转换流:InputStreamReader; 将输入字节流转换成输入字符流;输出字节流的转换流:OutputStreamReader; 将输出字节流转换成输出字符流;不存在将字符流转换成字节流的转换流:因为字符流比字节流功能强大,一般只有增强功能,没有减弱功能的;转换流作用:1、如果所获取到的是一个字节流,但是需要转换成字符流使用,这时候就可以使用转换流;2、使用转换流可以指定编码表进行读写文件; */public class Demo7 {// 读取控制台输入的内容@Testpublic void test1() throws IOException{// 获取标准输入流InputStream in = System.in;// 当控制台输入一个字符的时候能够正常读取,但是输入多个字符的时候只能读取到第一个字符;// 这是因为read()方法每次只能读取一个字节;System.out.println("控制台输入:" + (char)in.read());}// 如果想从控制台一次读取一行数据,只能通过BufferedReader来实现,但是创建BufferedReader对象的时候// 需要传入一个字符输入流;此时,就需要用到转换流了,将输入字节流转换成输入字符流;@Testpublic void test2() throws IOException{// 获取标准输入流InputStream in = System.in;// 将输入字节流转换成输入字符流InputStreamReader reader = new InputStreamReader(in);// 通过输入字符流构建BufferedReader对象BufferedReader buffer = new BufferedReader(reader);// 读取数据String line = buffer.readLine();System.out.println("控制台输入:" + line);// 关闭资源buffer.close();}// 将输出字节流转换成输出字符流@Testpublic void test3() throws IOException{// 找到目标文件File file = new File("D:\\a.txt");// 建立数据输出通道FileOutputStream out = new FileOutputStream(file);// 输出数据;方法1:将字符串转换成字节数组输出;//out.write("大家好".getBytes());// 输出数据;方法2:将输出字节流转换成输出字符流,直接输出字符串数据;OutputStreamWriter writer = new OutputStreamWriter(out);writer.write("你们好");// 关闭资源writer.close();}// 使用输出字节流的转换流指定码表写出数据@Testpublic void test4() throws IOException{// 找到目标文件File file = new File("D:\\a.txt");// 建立数据输出通道FileOutputStream out = new FileOutputStream(file);// 将输出字节流转换成输出字符流,并指定编码 OutputStreamWriter writer = new OutputStreamWriter(out, "utf-8");// 写出数据writer.write("大家好");// 关闭资源writer.close();}// 使用输入字节流的转换流按指定码表读取数据@Testpublic void test5() throws IOException{// 找到目标文件File file = new File("D:\\a.txt");// 建立数据输入通道FileInputStream in = new FileInputStream(file);// 将输入字节流转换成输入字符流,并指定编码;(utf-8读取数据正常;gbk读取的是乱码;因为是以utf-8写入的)//InputStreamReader reader = new InputStreamReader(in, "utf-8");InputStreamReader reader = new InputStreamReader(in, "gbk");// 建立缓冲字符流BufferedReader bufferedReader = new BufferedReader(reader);// 写出数据String str = bufferedReader.readLine();System.out.println("读取数据:" + str);// 关闭资源bufferedReader.close();}}

原创粉丝点击