java中,缓冲流的疑惑?
filereader()和filewriter()的read(char[]c)和write(Stringstr,intoff,intlen)方法不是也起到了缓冲作用吗?为...
filereader()和filewriter()的read(char[] c)和write(String str, int off, int len)方法不是也起到了缓冲作用吗?为什么一些书或者视频上都说非缓冲流效率低,说是数据都是读一个写一个,需要缓冲流对象才能提高效率???很疑惑!!!
展开
3个回答
展开全部
FileReader FileWriter 是字符流没有缓冲的作用。
缓存流是 BufferedReader 和 BufferedWriter
流的读取和传输都需要时间,如果一次性读取一个字节或者字符就发送到服务器,必定没有一次读取多个字节和字符然后发送到服务器高效。
缓存流是 BufferedReader 和 BufferedWriter
流的读取和传输都需要时间,如果一次性读取一个字节或者字符就发送到服务器,必定没有一次读取多个字节和字符然后发送到服务器高效。
追问
write(String str, int off, int len)方法不是将数组填充满了才写入的吗?
追答
那是你手动添加了一个缓冲,你去了解下Buffered开头的流。
2013-11-03
展开全部
对程序来讲,缓存是效率高的。
写多少、立即输出,或,有多少意即读,这样对程序来讲效率就低了,因为IO很可能跟不上程序那么快的。
缓存,带来一些IO上的别的问题,如来不及处理,就关闭IO流等。
写多少、立即输出,或,有多少意即读,这样对程序来讲效率就低了,因为IO很可能跟不上程序那么快的。
缓存,带来一些IO上的别的问题,如来不及处理,就关闭IO流等。
追问
write(String str, int off, int len)方法不是将数组填充满了才写入的吗?怎么你说写多少、立即输出,或,有多少意即读??看来你也是没看懂我表达的意思!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先起到缓冲作用的并不是你所说的某个方法实现的;缓冲是你建立某个流的时候由某个缓冲类进行包装,当你调用读写操作时,自动触发数据缓冲操作的。
还有,用不用缓冲效率的高低你从小数据量的操作很难看出来,如果,你有大批量的文件要处理的时候,你会很头疼没有用缓冲类的。
再有,我们平时用的InputStream类等是字节流,而FileReader等类都只是字符流,它们对数据操作时不会起到缓冲作用。这些类读写数据时,每进行一次操作都会去访问一次文件,这样效率自然就会很低。所谓缓冲其实就是,缓冲包装类会在你进行读写操作之前,读入一批数据。然后进行读写操作时直接从缓冲区取数据(访问缓冲区),当缓冲区的数据操作完毕时才再次读取文件。其实,缓冲类的作用就跟电脑内存条的作用是一样的。
还有,用不用缓冲效率的高低你从小数据量的操作很难看出来,如果,你有大批量的文件要处理的时候,你会很头疼没有用缓冲类的。
再有,我们平时用的InputStream类等是字节流,而FileReader等类都只是字符流,它们对数据操作时不会起到缓冲作用。这些类读写数据时,每进行一次操作都会去访问一次文件,这样效率自然就会很低。所谓缓冲其实就是,缓冲包装类会在你进行读写操作之前,读入一批数据。然后进行读写操作时直接从缓冲区取数据(访问缓冲区),当缓冲区的数据操作完毕时才再次读取文件。其实,缓冲类的作用就跟电脑内存条的作用是一样的。
更多追问追答
追问
没看懂你说的是什么意思!好像你没看懂我表达的意思!
追答
你不就是要问为什么飞缓冲流效率低吗
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询