A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM汪磊 高级黑马   /  2013-11-5 17:25  /  1486 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么时候用字节流?什么时候用字符流?什么时候用转换流?复习了下基础知识,这个问题还是模糊

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

4 个回复

正序浏览
电脑上所有的文件在底层都是以字节的形式存储,所以字节流可以操作任何一种文件,字符流是对字节流的一种封装,让程序员针对具体的事物做出最高效的反应,字符流是操作字符类文件用的,当中提供了很多方便的功能,比如readLine()方法就可以很方便的读取文本文件的一行,而如果用字节流也是可以完成的,但是相对复杂和繁琐。
而转换流有两种:一种是InputStreamReader,把字节流转换成字符流,另一种是OutputStreamWriter,把字符流转换成字节流。InputStreamReader的存在是某种特殊情况下的需要,在读取的时候需要以字节的形式来进行,而字节流虽通用但是相对操作繁琐,吧那些可以转换成字符流的字节流转换过来进行操作会更加方便,比如System.in,而且转换成字符流可以用BufferedReader进行装饰增强。而OutputStreamWriter的存在原因我觉得和InputStreamReader应该是一样的。
回复 使用道具 举报
1. InputStream 和OutputStream,两个是为字节流设计的,主要用来处理字节或二进制对象,
2.. Reader和 Writer是为字符流设计的,字符流只能处理字符或者字符串,例如读取文本文件,复制文本文件都可以使用字符流;
3.readLine方法是字符流BufferedReader类中的方法,而当使用键盘录入的read方法是字节流InputStream的方法,这时用转换流,readline可以整行整行读出,可以提高效率。

评分

参与人数 1技术分 +1 收起 理由
狼王 + 1

查看全部评分

回复 使用道具 举报
字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节, 操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是 音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点.
     所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.
      字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。

评分

参与人数 1技术分 +1 收起 理由
狼王 + 1

查看全部评分

回复 使用道具 举报
1.就是有关几个类的事 字节流  inputStream 与outputStream  字符流 reader与writer   转换流  inputStreamReader 与 outputStreamWriter
2. 都什么时候用呢 其实字节流比字符流要广泛  字符流只是为了更方便操作数据而产生的
字符流处理 比如要访问一个文本文件  而字节流可以是视频图片等
3.转换流又是怎么回事  用字符流处理数据不能指定编码这样就不能得到指定编码的数据 所以出现了转换流
4.io 中还有缓冲的 bufferedReader  提高效率
5.printWriter 这个比较强大 支持直接打印print
6.还有管道流  合并流 随机访问流
7.出现频率比较高的是 字节流 FileInputStream inputStreamReader bufferedReader FileOutputStream printWriter  
                               字符流  FileReader FileWriter
                               文件 File file = new File("d:\\info.txt") 把文件封装成对象





评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马