论坛
门户
内部优惠
喜欢
话题
VIP会员
搜索
新浪微博
登录
注册
100%
100%
首页
>
软件开发
>
java语言
>
Java_IO流的操作规律
回复
« 返回列表
zhoujufu
精灵王
注册日期
2011-07-25
发帖数
275
QQ
火币
390枚
粉丝
10
关注
4
加关注
写私信
打招呼
阅读:
3681
回复:
0
Java_IO流的操作规律
楼主
#
更多
只看楼主
倒序阅读
发布于:2013-08-23 11:50
保存
100%
100%
[]
1
流的操作规律:
1
,明确源和目的。
数据源:就是需要读取,可以使用两个体系:
InputStream
、
Reader
;
数据汇:就是需要写入,可以使用两个体系:
OutputStream
、
Writer
;
2
,操作的数据是否是纯文本数据?
如果是:数据源:
Reader
数据汇:
Writer
如果不是:数据源:
InputStream
数据汇:
OutputStream
3
,虽然确定了一个体系,但是该体系中有太多的对象,到底用哪个呢?
明确操作的数据设备。
数据源对应的设备:硬盘
(File)
,
内存
(
数组
)
,键盘
(System.in)
网络
(Soket)
数据汇对应的设备:硬盘
(File)
,内存
(
数组
)
,控制台
(System.out)
网络
(Soket)
。
4
,需要在基本操作上附加其他功能吗?
比如缓冲。
如果需要就进行装饰。
转换流特有功能:
转换流可以将字节转成字符,原因在于,将获取到的字节通过查编码表获取到指定对应字符。
转换流的最强功能就是基于 字节流
+
编码表 。没有转换,没有字符流。
发现转换流有一个子类就是操作文件的字符流对象:
InputStreamReader
|--FileReader
OutputStreamWriter
|--FileWrier
想要操作文本文件,必须要进行编码转换,而编码转换动作转换流都完成了。所以操作文件的流对象只要继承自转换流就可以读取一个字符了。
但是子类有一个局限性,就是子类中使用的编码是固定的,是本机默认的编码表,对于简体中文版的系统默认码表是
GBK
。
FileReader fr = new FileReader("a.txt");
InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"),"gbk");
以上两句代码功能一致,
如果仅仅使用平台默认码表,就使用
FileReader fr = new FileReader("a.txt"); //
因为简化。
如果需要制定码表,必须用转换流。
转换流
=
字节流
+
编码表。
转换流的子类
File =
字节流
+
默认编码表。
凡是操作设备上的文本数据,涉及编码转换,必须使用转换流。
喜欢
0
评分
0
最新喜欢:
SO 我拿流年 乱了浮生 SO
回复
100%
发帖
回复
« 返回列表
普通帖
您需要登录后才可以回帖,
登录
或者
注册
100%
返回顶部
关闭
最新喜欢