【java学习—十三】处理流之二:转换流(2)

文章目录

  • [1. 相关概念](#1. 相关概念)
  • [2. 转换输入流](#2. 转换输入流)
  • [3. 转换输出流](#3. 转换输出流)

1. 相关概念

转换流 提供了在字节流字符流 之间的转换

Java API 提供了两个转换流:

InputStreamReaderOutputStreamWriter

当字节流中的数据都是字符时,转成字符流操作更高效。

InputStreamReader

用于将字节流中读取到的字节按指定字符集解码成字符。需要和FileInputStream" 套接"。

OutputStreamWriter

用于将要写入到字节流中的字符按指定字符集编码成字节。 需要和 FileOutputStream" 套接"。

2. 转换输入流

举例:

将tt5.txt文件中的内容输出到控制台。其中tt5.txt里面的内容是"会当凌绝顶"。

java 复制代码
package day13;

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

/**
 * 转换流
 * 可以把字节流转换为字符流
 * 当字节流中的数据都是字符的时候,使用转换流转为字符流处理效率更高
 * @author 14532
 */

public class Test2 {
	public static void main(String[] args) {
		//所有的文件都是有编码格式的
		//对于我们来说,txt和java文件一般来讲有三种编码
		//ISO8859-1,西欧编码,是纯粹英文编码,不适应汉字
		//GBK和UTF-8,这两编码是适用于中文和英文
		//我们一般使用UTF-8编码
		
		try {
			Test2.testInputStreamReader();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 转换输入流为字符输入流
	 * 在转换字符流的时候,设置的字符集编码要与读取的文件的数据编码格式一致,不然就会出现乱码
	 * InputStreamReader
	 */
	public static void testInputStreamReader() throws Exception{
		FileInputStream fs = new FileInputStream("D:\\java_doc\\eclipse-workspace\\demo\\src\\day13\\tt5.txt");
		
		//把字节流转换为字符流
		InputStreamReader in = new InputStreamReader(fs, "UTF-8");//参数1是字节流,参数2是编码格式
		
		char[] c = new char[100];
		int len = 0;
		
		while((len = in.read(c)) != -1) {
			System.out.println(new String(c, 0, len));
		}
		
		in.close();
		fs.close();
		
	}
}

运行结果:

3. 转换输出流

举例:

将"你好你好"字符串输出到tt6.txt文件中

java 复制代码
package day13;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Test2 {
	public static void main(String[] args) {
		//所有的文件都是有编码格式的
		//对于我们来说,txt和java文件一般来讲有三种编码
		//ISO8859-1,西欧编码,是纯粹英文编码,不适应汉字
		//GBK和UTF-8,这两编码是适用于中文和英文
		//我们一般使用UTF-8编码
		
		try {
//			Test2.testInputStreamReader();
			Test2.testOutputStreamWriter();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}	
	
	/**
	 * 转换字节输出流为字符输出流
	 * 在转换字符流的时候,设置的字符集编码要与读取的文件的数据编码格式一致,不然就会出现乱码
	 * OutputStreamWriter
	 */
	public static void testOutputStreamWriter() throws Exception{
		FileOutputStream out = new FileOutputStream("D:\\java_doc\\eclipse-workspace\\demo\\src\\day13\\tt6.txt");
		
		OutputStreamWriter os = new OutputStreamWriter(out, "UTF-8");
		
		os.write("你好你好");
		os.flush();
		
		os.close();
		out.close();
	}

}
相关推荐
daidaidaiyu3 小时前
一文学习 工作流开发 BPMN、 Flowable
java
ZTLJQ4 小时前
序列化的艺术:Python JSON处理完全解析
开发语言·python·json
2401_891482174 小时前
多平台UI框架C++开发
开发语言·c++·算法
SuniaWang4 小时前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题六:《Vue3 前端开发实战:打造企业级 RAG 问答界面》
java·前端·人工智能·spring boot·后端·spring·架构
sheji34165 小时前
【开题答辩全过程】以 基于springboot的扶贫系统为例,包含答辩的问题和答案
java·spring boot·后端
88号技师5 小时前
2026年3月中科院一区SCI-贝塞尔曲线优化算法Bezier curve-based optimization-附Matlab免费代码
开发语言·算法·matlab·优化算法
t198751285 小时前
三维点云最小二乘拟合MATLAB程序
开发语言·算法·matlab
nap-joker5 小时前
【多模态解耦】DecAlign:用于解耦多模态表示学习的分层跨模态对齐
学习·多模态融合·最优传输·多模态表征学习·特征解耦·音频+图像+文本·原型引导
551只玄猫5 小时前
【数据库原理 实验报告1】创建和管理数据库
数据库·sql·学习·mysql·课程设计·实验报告·数据库原理
m0_726965985 小时前
面面面,面面(1)
java·开发语言