黑马程序员技术交流社区

标题: IO转换流求解惑。 [打印本页]

作者: 、__WSD吴少东    时间: 2013-4-19 21:44
标题: IO转换流求解惑。
本帖最后由 、__WSD吴少东 于 2013-4-19 22:47 编辑

今天看了一天转换流的关系,感觉越看越模糊,
有那么几点疑问
1.一个字符流,在什么情况下需要转化成字节流,只是为了操作方便么?除了那个字符编码表的情况
2.转化流,到底是要做什么? 大神们不贴例子能够讲解清楚最好
3.涉及到什么样的数据时,使用转化流?
作者: 极限冰风    时间: 2013-4-19 21:56
字节流 FileInputStream FileOutputStream 字符流 FileReader FileWriter        字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点.     所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.      字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。 字节流转换成字符流可以用 InputSteamReader OutputStreamWriter
作者: 偏執旳、靑春    时间: 2013-4-19 22:04
1.字符流一般不是用转换成字节流,但是反过来有必要了,可以提高效率络,字符流的传输效率比字节流的高
2.流有很多种,信息的传递就要用到流。
转化流就是为了提高效率罢了 你想想有些本来就是文字啥的,用字符流多方便传递快,解析快,何必要去编程字节呢?是不是?
3.InputStreamReader/OutputStreamWriter,把字节转化成字符。
使用方式
如果使用非默认编码保存文件或者读取文件时,需要用到转换流,因为字节流的重载构造方法中有指定编码格式的参数,而FielReader 与 FileWriter 是默认编码的文本文件。

当文件是字节文件时:
     读取:提高效率用BufferedReader的独有快速方法时,需要转换。FileInputStream BufferedReader
     输出:提高效率一般用BufferedWriter缓存,需要转换。FileOutputStream  BufferedWriter
当文件是字符流时:需要转换
作者: 、__WSD吴少东    时间: 2013-4-19 22:46
标题: RE: IO转换流求解惑。
偏執旳、靑春 发表于 2013-4-19 22:04
1.字符流一般不是用转换成字节流,但是反过来有必要了,可以提高效率络,字符流的传输效率比字节流的高
2. ...

谢了哥们,清楚很多了//




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2