JavaIO编程(字节流与字符流的区别+转换流)

字节:一种计量单位,表示数据量的多少。(Byte)
字符:数字,字母,汉字和各种符号。(String(字符串)、char(字符))
区别:字节流没有使用到缓冲区,而字符流使用了; 处理各种数据都可以通过字节流完成,而在处理中文的时候使用字符流会更好。

转换流:通过InputStreamReader(字节输入流转换为字符输入流) 、 OutputStreamWriter(字节输出流转换为字符输出流)两个类来实现。
它们的继承关系如下:
java.lang.Object
| - java.io.Writer
| - java.io.OutputStreamWriter
| - java.io.FileWriter

java.lang.Object
| - java.io.Reader
| - java.io.InputStreamReader
| - java.io.FileReader
由上可以发现,所有要读取的文件数据都是字节数据,所有的字符都是在内存中处理后形成的。

OutputStreamWriter类的构造方法:
OutputStreamWriter(OutputStream out)
解释:OutputStreamWriter类的构造方法接收OutputStream类的对象,且OutputStreamWriter是Writer的子类,该类对象可以直接向上转型为Writer类对象,这样就可以将接收到的字节输出流转换为字符输出流。
同理,InputStreamReader也是一样。

实现输出流转换:

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;

public class TestOutputStreamWriter {
	public static void main(String args[]) throws Exception{
		File file = new File("D:" + File.separator + "demo.txt" + "demo.txt");
		if(!file.getParentFile().exists()){
			file.getParentFile().mkdirs();		//创建父路径
		}
		OutputStream output = new FileOutputStream(file);  //字节流
		//将OutputStream类对象传递给OutputStreamWriter类的构造方法,向上转型为Writer
		Writer out = new OutputStreamWriter(output);
		out.write("今天星期五,上山打老虎");
		out.flush();
		out.close();
	}
}
发布了30 篇原创文章 · 获赞 1 · 访问量 1910

猜你喜欢

转载自blog.csdn.net/Zzh1110/article/details/103097930
今日推荐