从文件中读取输入的最有效方法是什么?
我有一个非常大的文件,其中包含由换行符分隔的单词列表
e.g
computer
science
is
fun
really
我正在考虑使用BufferedReader
对象,但我对文档中的这一行感到困惑。
"通常,由Reader构成的每个读取请求都会导致相应的读取请求由基础字符或字节流构成。因此,建议将BufferedReader包装在任何read()操作可能代价高昂的Reader上,例如FileReaders和InputStreamReaders。例如,
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
将缓冲指定文件的输入。如果没有缓冲,read()或readLine()的每次调用都可能导致从文件中读取字节,转换为字符,然后返回,这可能是非常低效的。 " <
有人可以向我解释一下吗?
在第二次阅读时,我开始相信BufferedReader
是我最好的选择。还有更好的方法吗?
答案 0 :(得分:7)
This post可能会有所帮助。
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());
与内容数据结构的集合不同,集合中包含元素,Streams允许并行处理,其行为类似于按需计算元素的固定数据结构。 此外,Streams还支持Pipelining和Internal Iterations。