1、区分:读 写
2、常用流
文件流:(读写文件)
FileInputStream/FileOutputStream
数据流:(读写int,double,String)
DataInputStream/DataOutputStream
逐行读写流:(逐行读写文本信息)
BufferedReader/PrintStream(PrintWriter)
转换流:(字节流和字符流没有任何关系,必须通过转换流)
InputStreamReader OutputStreamWriter
对象流:(读写任意的对象)
ObjectInputStream/ObjectOutputStream
3、编码/解码 什么叫做编码,什么叫做解码?
内存----》显示 编码
编码 unicode----》gbk,gb2312,utf-8 一般输出
ImageIODemo <用这个提问 读 写 编码 解码>
文件---》内存 内存----》文件
//将内存image对象写入到文件中, 就需要编码/序列列化
CardsIODemo:
1、创建扑克牌 (内存中)
2、随机排列后写入文件 输入还是输出?
OutputStream out = new FileOutputStream(file);
DataOutputStream dos = new DataOutputStream(out);
3、 将文件cards.dat 读取为Card的集合others read or write
DataInputStream dis =
new DataInputStream(
new BufferedInputStream(//增加输入缓冲流,自动处理缓冲
new FileInputStream(file)));
浅层复制 深层复制 (看图片)
CharEncodingDemo
String str = "ABCDE中国";写出到文件中,需要 编码 or 解码?
用不同的编码写到文件里,从文件里读出来
将16位unicode char序列编码为 byte序列, 使用编码方案
utf-16be 2个字节
UTF-8 英文1个字节 中文三个字节
/GBK 中文本地编码, 中国标准支持全部中国字符(20000+)
//采用变长编码: 1~2字节 其中英文是1字节, 中文2字节
//GBK不能支持全部国际字符, unicode 到GBK是码表转换实现
//GB2312 是 GBK 子集, GB2312 支持6000+常用汉字
// 中: 4e2d
// GBK: d6 d0
// GB2312:d6 d0
// 玥 喆 镕 發
byte[] gbk = str.getBytes("GBK");//unicode编码为GBK
乱码问题是每个程序员都会遇到的问题,这块要弄明白,以后就不会被乱码问题困扰了
InputStreamReaderDemo 会从基本byte流读取数据并解码为char字符
InputStream in = new FileInputStream(file);
InputStreamReader reader=new InputStreamReader(in,"UTF-8")
BufferedReaderDemo
// InputStream is = new FileInputStream(file);
// InputStreamReader reader=new InputStreamReader(is,"gbk");
// BufferedReader in = new BufferedReader(reader);
OutputStreamWriterDemo
* OutputStreamWriter 也是一个流功能扩展, 依赖于OutputStream
* OutputStreamWriter 提供了write(int) 方法, 参数的低16位数据
* (char 数据) 进行编码, 编码为byte序列, 写入到 OutputStream
* OutputStream 的write(byte) 写出一byte, 是int的低八位
* OutputStreamWriter 的write(char)编码char为byte写出到底层流
PrintWriterDemo
PrintWriter out = new PrintWriter(
new OutputStreamWriter(
new BufferedOutputStream(
全国职称计算机考试速成过关系列套装:W .. 定价:¥133 优惠价:¥133.0 更多书籍 | |
全国职称计算机考试速成过关系列套装:W .. 定价:¥124 优惠价:¥124.0 更多书籍 |