IO-04字节-字符转换流

掌握OutputStreamWriter和InputStreamReader的作用。

在整个IO包中,实际上就是分为字节流和字符流,但除了这两个流之外,还存在一组字节-字符流转换类。

OutputStreamWriter:是Writer的子类,将输出的字符流编程字节流,既:将一个字符流的输出对象变成字节流输出对象。

InputStreamReader:是Reader的子类,将输入的字节流变成字符流。既:将一个字节流的输入对象变成字符流的输入对象。

字符流转换成字节流的代码:

package lianxijihe;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;

public class lianxi047 {
	public static void main(String[] args){
		File f = new File("F:\\AAA.txt");
		try {
			Writer w = new OutputStreamWriter(new FileOutputStream(f));
			w.write("aaaaaaaa");
			w.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}

将字节流转换成字符流代码:

package lianxijihe;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;

public class lianxi048 {
	public static void main(String[] args){
		File f = new File("F:\\Aaa.txt");
		try {
			Reader r = new InputStreamReader(new FileInputStream(f));
			char[] b = new char[1024];
			r.read(b);
			r.close();
			System.out.println(new String(b));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}

从JDK文档发现FileWriter并不是Writer的直接子类而是OutputStreamWriter的子类,那么从类的继承关系可以发现,不管是使用字节流还是字符流实际上最终都是以字节流的形式操作输入输出流的。

IO-04字节-字符转换流,布布扣,bubuko.com

时间: 2024-10-11 07:29:07

IO-04字节-字符转换流的相关文章

字节字符转换流

字符流的重点是编码问题

Java文件与io——复制文件和转换流

字节流与字符流的区别 在所有的流操作里,字节永远是最基础的.任何基于字节的操作都是正确的.无论是文本文件还是二进制的文件. 如果确认流里面只有可打印的字符,包括英文的和各种国家的文字,也包括中文,那么可以考虑字符流.由于编码不同,多字节的字符可能占用多个字节.比如GBK的汉字就占用2个字节,而UTF-8的汉字就占用3个字节.所以,字符流是根据指定的编码,将1个或多个字节转化为java里面的unicode的字符,然后进行操作.字符操作一般使用Writer,Reader等,字节操作一般都是Input

Java IO(四)- 转换流

转换流 InputStreamReader和OutputStreamWriter用于字节数据到字符数据之间的转换. InputStreamReader需要和InputStream套接(把InputStream转换成InputStreamReader) OutputStreamWriter需要和OutputStream套接(把OutputStreamWriter转换成OutputStream) 转换流在构造时可以指定其编码集合,例如: InputStream is = new InputStrea

Java之缓冲流(字节/字符缓冲流)

概述 缓冲流,也叫高效流,是对4个基本的 FileXxx 流的增强,所以也是4个流,按照数据类型分类: 字节缓冲流: BufferedInputStream , BufferedOutputStream 字符缓冲流: BufferedReader , BufferedWriter 缓冲流的基本原理及好处 是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率. BufferedOutputStream 字节缓冲输出流 java.io.Buff

java中关于编码的问题(字符转换流及字符缓冲流 )

上次我们使用的是字节流,还有一种方式就是字符流,上次说过如何分辨使用哪种流,如果记事本可以读懂则使用字符流,否则使用字节流.使用字符流就需要牵扯到编码的问题,下面给出一种转化流的格式. OutputStreamWriter OutputStreamWriter(OutputStream os):默认编码,GBK OutputStreamWriter(OutputStream os,String charsetName):指定编码.InputStreamReader InputStreamRead

字符流Reader、Writer,字符转换流 OutputStreamWriter、InputStreamReader

Reader.Writer是所有字符流的超类. Writer类方法 void write(String str) void write(char[] cbuf, int off, int len); void flush() void close OutputStreamWriter构造方法字符编码默认为系统编码,可以不写 FileWriter的append默认为false,可以不写.另一个构造(File file, boolean append) Writer out = new FileWr

java IO 四(转换流的使用)

扯点别的: 随着年龄的慢慢增长,有些道理才明白,有些爱才感慨.家人或许希望你能立足大城市,开创一番事业.但是在内心里家人永远希望你多花点时间陪陪他们,一起吃吃饭,说说话,只要你平平安安,生活快乐,家人就感到幸福.所以多花点时间陪陪父母.陪陪爱人.陪陪孩子. 又搁置了不短的时间,继续写java io的知识,现在感觉自己的记忆力真的不行了,总是记不住东西,哎,关键还是理解不够深入,靠死记硬背是不行的看样.开搞.参考自毕向东老师的视频 第一: InputStreamReader 看看JDK里面的解释,

【IO流】22 - 字符流 - 转换流OutputStreamWrite和InputStreamReader

转换流 InputStreamReader package cn.itcast.demo; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; /* * 转换流 * java.io.InputStreamReader 继承 Reader * 字符输入流,读取文本文件 * * 字节流向字符的桥梁,将字节流转字符流 * * 读取的方法: * read() 读取1个字

黑马程序员-io读取键盘录入之转换流

--Java培训.Android培训.iOS培训..Net培训.期待与您交流! -- 自学视频io第二部分最后 这一讲重点部分,明白io流中这么多体系,怎么快速判断用哪种流... 1 1.1:明白源:InputStream Reader 1.2:明确目的:OutputStream Writer 2 是否是文本文件 是: 用Reader Writer 不是:用 InputStream OotputStream 3 是否要提高读写效率 是:BufferedReader br=new Buffered