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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马姗姗 中级黑马   /  2014-1-4 21:26  /  1033 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 马姗姗 于 2014-1-6 22:05 编辑

BufferReader  FileInputStream  FileReader
这三个读取的时候一个按行读取,一个按字节读取,最后一个按字符读取?
那为什么不都用BufferReader呢?这样不是省事多了?

8 个回复

倒序浏览
首先,你的第一个单词写错了,是BufferedReader.
其次纠正一下,BufferedReader也不一定就是按行读取的,只有当你调用readLine()方法时才是读一行,你调read()还是读单个字符
最后一个问题,BufferedReader,FileReader是操作字节流的,你要是操作一个图片文件怎么能用字节流呢
回复 使用道具 举报
bufferReader只能读取字符数据。在说bufferreader只是一个缓冲区,没有读写流,他根本不能读取数据。
回复 使用道具 举报
bufferreader是读取字符的。再说bufferreader是缓冲区,没有读取流他就不能读取数据
回复 使用道具 举报
BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。记住:他里面还有read()方法,只有调用了readline()才从行开始读。

FileInputStream :从文件系统中的某个文件中获得输入字节。这是用于读取图片等按字节流存储的对象

FileReader:用来读取字符文件的便捷类。 它可以用父类Reader的read(char[] cbuf)方法读取字符

其实BufferedReaderb也是 Reader的一个子类,只不过它里面封装了缓冲区,更加高效的用于读数据。
回复 使用道具 举报
BufferReader是一个包装类或者可以称为缓冲流,同样还有一个BufferInputStream 作用与字节流缓冲。   FileInputStream FileReader分别是基于字节跟字符操作的,这是基本也是最直接的文件输入流,但是它们都是一个字节或一个字符的在操作流,这样效率是很低的。所以一般使用都是会将它们用BufferReader和BufferInputStream 缓冲后再使用,用缓冲流包装后,还可以设置缓存大小,这样操作流对象效率就高得多了,特别是在输出流里,缓冲流的作用非常大。
用BufferReader这个是要看实际情况的,当然你要读取字符输入流,用BufferReader这当然是非常好的选择了。InputStreamReader这个类也是很重要的,用于字节向字符流的转换 。
回复 使用道具 举报
InputStream和ReaderInputStream是表示字节输入流的所有类的超类
Reader是用于读取字符流的抽象类
InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。即用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组。
BufferedReader的最大特点就是缓冲区的设置。通常Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求,如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。
回复 使用道具 举报
BufferReader是处理流,再说对不同的需求要求也不一样,要看实际需求、、、、、
回复 使用道具 举报
概念有点混乱哦,最好看下笔记
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马