java - 在Java中拆分文件以进行多线程

标签 java multithreading file io filesplitting

对于我正在从事的项目,我试图尽快计算文本文件中的元音。为了做到这一点,我正在尝试一种并发方法。我想知道是否可以同时读取文本文件以加快计数速度?我认为瓶颈是I/O,因为现在我正在通过缓冲的读取器读取文件并逐行处理,所以我想知道是否可以一次读取文件的多个部分。

我最初的想法是使用
Split File - Java/Linux

但是显然MappedByteBuffers并不是很好的性能选择,分割后,我仍然需要逐行从每个MappedByteBuffer中读取。

另一种选择是在读取一定数量的行后进行拆分,但这无法达到目的。

将不胜感激。

最佳答案

以下内容不会拆分文件-但可以帮助同时处理它!

在Java 8中使用Streams,您可以执行以下操作:

Stream<String> lines = Files.lines(Paths.get(filename));
lines.filter(StringUtils::isNotEmpty) // ignore empty lines

如果要并行运行,可以执行以下操作:
lines.parallel().filter(StringUtils::isNotEmpty) 

在上面的示例中,我过滤了空行-但是您当然可以通过实现自己的方法并调用它来将其修改以供您使用(计算元音)。

关于java - 在Java中拆分文件以进行多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30583552/

相关文章:

c - 将文件读取到数组字符串

java - 用于读取 Java 文件的最好/最简单的类是什么?

java - 浏览器下载完成事件

java - 如何使用 servlet 发送电子邮件?

Java Array Index out of Bounds 异常 with/for 循环

java - 给线程的最小时间

python-3.x - Tkinter:使用 after() 使函数定期运行

c - C 中的可移植线程安全?

c# - 开发游戏服务器的好语言?

java:查找网站的RSS文件