从文件中读取输入的最有效方法是什么?
我有一个非常非常大的文件,其中包含一个用换行符分隔的单词列表
例如
computer
science
is
fun
really
我正在考虑使用BufferedReader
对象,但是我对文档中的这一行感到困惑。
"通常,读取器发出的每个读取请求都会导致对底层字符或字节流发出相应的读取请求。因此,建议将 BufferedReader 包装在任何 read() 操作成本高昂的读取器周围,例如 FileReader 和 InputStreamReaders。例如
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
将缓冲来自指定文件的输入。如果没有缓冲,每次调用 read() 或 readLine() 都可能导致从文件中读取字节,转换为字符,然后返回,这可能非常低效。"<</p>
有人可以向我解释一下吗?在第二次阅读时,我开始相信BufferedReader
是我最好的选择。有没有更好的方法?
这篇文章可能会有所帮助。
BufferedReader是一个不错的选择,它可以让你在 Java 8 中将 BufferedReader 变成 java.util.Stream。
例如,使用java.util.stream
包解析大型 CSV 文件:
InputStream is = new FileInputStream(new File("persons.csv"));
BufferedReader br = new BufferedReader(new InputStreamReader(is));
List<Person> persons = br.lines()
.substream(1)
.map(mapToPerson)
.filter(person -> person.getAge() > 17)
.limit(50)
.collect(toList());
与集合不同,集合是内存中的数据结构,其中包含元素,流允许并行处理,并且行为类似于按需计算元素的固定数据结构。此外,流还支持流水线和内部迭代。