- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我无法真正理解 Java 中 FileReader
和 BufferedReader
类的用途。
在 docs.oracle 中,建议将缓冲读取器包装在 FileReader
对象周围,因为直接使用 FileReader
效率不高。成本或管理费用从何而来?
假设我有一个文本文件,我想使用这些类将其读入我的 java 程序中:
我使用 FileReader 和 BufferedReader
FileReader fileReader = new FileReader(new File("text.txt)"); // probably correct???
BufferedReader bufferedReader = new BufferedReader(fileReader);
1) FileReader
对象的任务是什么?是否负责通过操作系统向文件发出 I/O 请求,然后读取字节?这有什么成本?FileReader
发出多个 I/O 请求是真的吗?还是 FileReader
对象必须逐个字符地将字节转换为字符时的成本?
2) BufferedReader-object 的任务——引用上面的最后一句话。 - BufferedReader 对象的作用是简单地缓冲传入字节的数组,然后将它们转换为字符吗?
非常感谢解答
编辑:首先感谢您的回答。但我应该提到,正是我研究过的这份文档。叫我傻什么的——但“每个阅读请求”是什么意思。 每个 读取请求何时发出?多久一次?
通常,Reader 发出的每个 读取请求都会导致对底层字符或字节流发出相应的读取请求。因此,建议将 BufferedReader 包装在其 read() 操作可能代价高昂的任何 Reader 周围,例如 FileReaders 和 InputStreamReaders。例如,
这主要是提出这个问题的原因 - 听起来 FileReader 会导致大量 I/O 请求,从而减慢速度。
最佳答案
来自 oracle 文档:
In general, each read request made of a Reader causes a corresponding read request to be made of the underlying character or byte stream. It is therefore advisable to wrap a BufferedReader around any Reader whose read() operations may be costly, such as FileReaders and InputStreamReaders. For example,
BufferedReader in = new BufferedReader(new FileReader("foo.in")); will buffer the input from the specified file. Without buffering, each invocation of read() or readLine() could cause bytes to be read from the file, converted into characters, and then returned, which can be very inefficient.
因此,正如文档明确建议的那样,将 BufferedReader
包裹在 FileReader
周围可以防止从文件中反复读取数据。 BufferedReader
缓冲 输入。
关于java - FileReader 和 BufferedReader 的作用——为什么要 wrapp FileReader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25082394/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!