java教程:继续谈java中的IOSteam知识点
时间:2013-03-13 08:42 来源: 翻译器在线 作者:周恩军
【我爱IT技术网】3月13日IT技术:接上一篇IOSteam:java教程:浅谈IOStream的个人学习笔记 今天还是继续昨天的内容,总觉得昨天的方法读写文件比较麻烦,今天总算给出了比较方便的方案。

IOSteam
总体来说昨天说的都是字节流的处理,今天讲的确实字符流的处理了,以读写文本来说,这样方便太多了。
同样的,所有的字符流处理类分为输入和输出衍生自两个抽象类Reader和Writer,从这两个类中继承的子类可以实现对不同对象的字符流操作,其中InputStreamReader和OutputStreamWriter两个类是实现字节流和字符流的转换的。在各种类中同样都有read()和write()等方法使用方法和字节流差不多,就不多说了。
Reader类中有readLine()方法返回的是一行的字符串,大大方便了对流的读取,而在Writer类中也有newLine()方法可以实现换行。
值得注意的是字符流的类只适合于对文本文件进行操作,而字节流则可以适应各种类型的文件,因为一个字符是两个字节,有可能出错。
还有配置文件,可以使用Properties类,因为此类实现了Map接口,因此也是一个键-值对的形式,有一个load()方法可以从FileInputStream中加载数据,有一个Store()方法可以使用FileOutputStream将配置保存,还有getProperty()和setProperty()可以获得和修改配置。
键盘输入,有一个System.in的标准输入流表示键盘的输入,把它封装成一个Reader就可以实现对键盘输入的控制了。
最后是序列化的问题,在IOStream中有一类ObjectIOStream,可以实现将一个对象作为输入输出的源,但是有一个原则,就是这个对象和这个对象所调用的类必须能够序列化。说起来很复杂,其实实现起来很简单,只需要在该对象所属的类,如果该类有调用其他类而其他类不能序列化时,在该类和该类所调用的类声明部分后面加上一句implements Serializable 就可以了!

IOSteam
总体来说昨天说的都是字节流的处理,今天讲的确实字符流的处理了,以读写文本来说,这样方便太多了。
同样的,所有的字符流处理类分为输入和输出衍生自两个抽象类Reader和Writer,从这两个类中继承的子类可以实现对不同对象的字符流操作,其中InputStreamReader和OutputStreamWriter两个类是实现字节流和字符流的转换的。在各种类中同样都有read()和write()等方法使用方法和字节流差不多,就不多说了。
Reader类中有readLine()方法返回的是一行的字符串,大大方便了对流的读取,而在Writer类中也有newLine()方法可以实现换行。
值得注意的是字符流的类只适合于对文本文件进行操作,而字节流则可以适应各种类型的文件,因为一个字符是两个字节,有可能出错。
还有配置文件,可以使用Properties类,因为此类实现了Map接口,因此也是一个键-值对的形式,有一个load()方法可以从FileInputStream中加载数据,有一个Store()方法可以使用FileOutputStream将配置保存,还有getProperty()和setProperty()可以获得和修改配置。
键盘输入,有一个System.in的标准输入流表示键盘的输入,把它封装成一个Reader就可以实现对键盘输入的控制了。
最后是序列化的问题,在IOStream中有一类ObjectIOStream,可以实现将一个对象作为输入输出的源,但是有一个原则,就是这个对象和这个对象所调用的类必须能够序列化。说起来很复杂,其实实现起来很简单,只需要在该对象所属的类,如果该类有调用其他类而其他类不能序列化时,在该类和该类所调用的类声明部分后面加上一句implements Serializable 就可以了!
本文来源 我爱IT技术网 http://www.52ij.com/jishu/327.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
