Java:BufferedInputStream这种用法看不懂,求解

BufferedInputStreambis=null;byte[]buffer=newbyte[1024];try{bis=newBufferedInputStream... BufferedInputStream bis = null;
byte[] buffer = new byte[1024];
try {
bis = new BufferedInputStream(new FileInputStream("E:" + File.separator + "demo.txt"));
int i = 0;
while ((i = bis.read(buffer)) != -1) {
System.out.print(new String(buffer, 0, i));
}
}

BufferedInputStream中的read(byte[] b)继承自FilterInputStream,FilterInputStream中的read(byte[] b)直接调用的FileInputStream中的read(byte[] b),而这个方法是直接从底层流读取数据的,而不是从缓冲区中,所以这种写法并没有提高性能,但是在很多demo代码中经常看到这么写的,是真的有问题还是我理解错了呢?
展开
 我来答
llei32wang
推荐于2018-03-23 · TA获得超过2736个赞
知道大有可为答主
回答量:1478
采纳率:60%
帮助的人:1400万
展开全部
BufferedInputStream 是有缓冲的 如果按一般的demo是用法是不使用缓冲区的,而且实际使用缓冲会因为填充缓冲区反倒比直接读的要慢。
BufferedInputStream的缓冲是为了重复读取流的,使用前需要先用mark方法指定缓冲数组的大小,然后每次读流的时候 BufferedInputStream 会自动把的读取的字节充填进缓冲数组,当调用reset方法后就能通过read方法重新读取标记过的流。
追问
前辈您好,您的意思是说这样写确实是没有用到缓冲区的,只是可以通过这样外部传进来byte[]让BufferedInputStream填充可以实现重复访问吗?
碧血玉叶花
推荐于2017-05-23 · TA获得超过4976个赞
知道大有可为答主
回答量:6154
采纳率:0%
帮助的人:1703万
展开全部
/***
* @author outofmemory.cn*/
public class Main {/**
* 从文件中读取文本*/
public void readFromFile(String filename) {
BufferedInputStream bufferedInput = null;
byte[] buffer = new byte[1024];try {
//创建BufferedInputStream 对象
bufferedInput = new BufferedInputStream(new FileInputStream(filename));
int bytesRead = 0;
//从文件中按字节读取内容,到文件尾部时read方法将返回-1
while ((bytesRead = bufferedInput.read(buffer)) != -1) {
//将读取的字节转为字符串对象
String chunk = new String(buffer, 0, bytesRead);
System.out.print(chunk);}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
//关闭 BufferedInputStreamtry {
if (bufferedInput != null)
bufferedInput.close();
} catch (IOException ex) {
ex.printStackTrace();}}}/**
* @param args 命令行参数*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
指尖点滴bV
2015-05-23 · TA获得超过626个赞
知道小有建树答主
回答量:1258
采纳率:71%
帮助的人:252万
展开全部
read方法的确是从缓冲区取的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式