作者marketcos (marketcos)
看板java
标题[问题] JAVA输入输出观念
时间Thu Jan 23 03:22:03 2014
今天在学习JAVA的IO, 有点混乱了
整理了一下目前理解状况如下, 希望先进可以指点一下, 是否有不对的地方
初步印象:
InputStream、OutputStream、Reader、Writer 是四个跟IO有关的抽象CLASS,
每个CLASS各自有多个子类继承它
InputStream、Reader 都是负责输入流的; OutputStream、Writer 都是负责输出流的
除了 InputStream、OutputStream、Reader、Writer, 还有 File 类, 是处理档案时会用
的...
差别:
InputStream、OutputStream 处理BYTE类型/二进位档案/8位元的流
Reader、Writer 处理字元串流/Character Stream/16位元的流
使用方式:
使用前要 import java.io.
进行输入输出前, 要先取得 InputStream(输入来源) 或 OutputStream(输出目的)
用完要 .close();
---------------以上是对JAVA IO的初步了解, 不知有无误解------------------------
-------------------------以下是问题------------------------------------
看完讲义, 要来写练习时, 发现包来包去的写法, 让人好混乱啊 @@
例如这段 BufferedWriter bw = new BufferedWriter(new
OutputStreamWriter(System.out));
BufferedWriter、OutputStreamWriter 不都是继承 Writer 的子类吗? 为什麽 Reader里
还要再用另一个 Reader 呢?
去网上看了些说明, 整理如下...
InputStreamReader、OutputStreamWriter的引数为Input、Output的档名
InputStreamReader在读取位元组资料後,可以将它转换成字元资料;OuputStreamWriter
是将字元转换成位元组资料。
是InputStream到Reader、OutputStream到Writer的桥梁。
所以说, InputStreamReader、OutputStreamWrite 是必须的罗, 要有它们才能转成
BufferedReader可读的, 把BufferedWriter输出的东西转成位元资料存入档案
是酱子说吗?
另外,还有 BufferedWriter output = new BufferedWriter(new FileWriter(file));
BufferedWriter bw = new BufferedWriter (new FileWriter(“test.txt”));
这里用FileWriter()是因为引入的是一个档案吗? 可以改成用
OutputStreamWriter(file)吗?
也有看到酱子的: BufferedReader br = new BufferedReader(new InputStreamReader(new
FileInputStream("ming.txt"))); 怎麽这麽多层啊? Orz
总之, 是不是, BufferedWriter 或 BufferedReader 在使用时, 都必须有个中介才行呢?
另外, 一定要跟 try catch 一起用吗
它是注定会有EXCEPTION吗, 还是只是要以防找不到档的时后?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 134.2.251.20
※ 编辑: marketcos 来自: 134.2.251.20 (01/23 04:18)
1F:推 PsMonkey:不是注定会有 exception,只是你必须指定要怎麽处理他 01/23 04:36
2F:推 LPH66:你的主要问题可以搜寻关键字「decorator pattern」 01/23 11:43
3F:→ marketcos:好的, 非常谢谢! 01/24 00:41
4F:推 kiwatami:我看完这段後打包成几个method就抛到脑後了XD 02/12 20:44