(Java)IO流对象(四)转换流

【转换流】

OutputStreamWriter

           | --- FileWriter

InputStreamReader

           | --- FileReader

 

【OutputStreamWriter转换流】字符转字节

                 | -- FileWriter  (不能设定编码表,为系统默认的)

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

/*
 *  转换流    java.io.OutputStreamWriter  继承Writer类
 *        就是一个字符输出流,用来写文本文件
 *        方法:write()  参数:字符char、字符数组char[] c、字符串 String
 *        字符 流向 字节 的桥梁, 可以将 字符流 转换成 字节流
 *  OutputStreamWriter 使用方式:
 *        构造方法:
 *           OutputStreamWriter(OutputStream out) 接受所有的字节输出流     如 FileOutputStream
 *           OutputStreamWriter(OutputStream out, String charsetName)
 *                        String charsetName   传递编码表的名字  GBK  UTF-8  (不区分大小写)
 *           
 *  OutputStreamWriter 有个子类FileWriter   不能更改编码表(为系统默认)         
 */
public class OutputStreamWriterDemo1 {
	public static void main(String[] args) throws IOException {
		//writeGBK();
		writeUTF();
	}
	// 1. 转换流对象OutputStreamWriter 写文本      文本采用GBK形式写入
	public static void writeGBK() throws IOException{
		// 创建字节输出流,绑定数据文件
		FileOutputStream fos = new FileOutputStream("E:\\workspace\\Demo\\gbk.txt");
		// 创建转换流对象,在构造方法中  绑定字节输出流对象,使用GBK编码表
		OutputStreamWriter osw = new OutputStreamWriter(fos,"GBK");  // "GBK"默认可以不写
		
		// 转换流写数据
		osw.write("你好啊");
		
		osw.close();                   // "你好啊"在文件中是6个字节      GBK编码表中一个汉字用2个字节表示
	}
	
	// 2. 转换流对象OutputStreamWriter 写文本      文本采用UTF-8形式写入
	public static void writeUTF() throws IOException{
		//  创建字节输出流,绑定数据文件
		FileOutputStream fos = new FileOutputStream("E:\\workspace\\Demo\\utf.txt");
		// 创建转换流对象,在构造方法中  绑定字节输出流对象,使用UTF-8编码表
		OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
				
		// 转换流写数据
		osw.write("你好啊");
		
		osw.close();                   // "你好啊"在文件中是9个字节      UTF编码表中一个汉字用3个字节表示	
	}

}

【InputStreamReader转换流】字节转字符

              | -- FileReader   (不能设定编码表,为系统默认的)

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

/*
 *  转换流,java.io.InputStreamReader  继承Reader类
 *       字符输入流,读取文本文件
 *       字节流向字符的桥梁,将字节流转化为字符流
 *       读取方法:read()  读取一个字符,读取字符数组
 *  InputStreamReader 使用方式:
 *       构造方法:
 *       InputStreamReader(InputStream in)  接受所有字节输入流,如FileInputStream
 *       InputStreamReader(InputStream in, String charsetName)
 *                        String charsetName   传递编码表的名字  GBK  UTF-8  (不区分大小写)
 *       
 */
public class InputStreamReaderDemo1 {
	public static void main(String[] args) throws IOException{
		function_1();
	}
	
	// 1.转换流 InputStreamReader对象 采用GBK(系统默认编码表)编码表 ,读取文本,
	public static void function_1() throws IOException{
		// 创建字节输入流对象
		FileInputStream fis = new FileInputStream("E:\\workspace\\Demo\\gbk.txt"); //GBK编码  6个字节
		// 创建转换流对象,在构造方法中绑定字节输入流对象,使用默认编码表GBK
		InputStreamReader isr = new InputStreamReader(fis);
		
		char[] c = new char[1024];
		int len =0;
		while((len = isr.read(c)) != -1){
			System.out.println(new String(c,0,len));   // 你好啊
		}
		
		isr.close();
	}
	
	// 1.转换流 InputStreamReader对象使用UTF-8编码表,读取文本
	public static void function_2() throws IOException{
		// 创建字节输入流对象
		FileInputStream fis = new FileInputStream("E:\\workspace\\Demo\\utf.txt");  // UTF-8编码  9个字节
		// 创建转换流对象,在构造方法中绑定字节输入流对象,使用UTF-8编码表
		InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
		
		char[] c = new char[1024];
		int len =0;
		while((len = isr.read(c)) != -1){
			System.out.println(new String(c,0,len));   // 你好啊
		}
		
		isr.close();
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值