Java:InputStream太慢,无法读取大文件

我必须逐字符读取一个53 MB的文件。当我使用ifstream在C ++中完成此操作时,它以毫秒为单位完成,但是使用Java

InputStream则需要几分钟。Java这么慢是正常的还是我错过了一些东西?

另外,我需要用Java完成程序(它使用servlet,而我必须从servlet调用处理这些字符的函数)。我当时在想也许是用C或C

++编写文件处理部分,然后使用Java Native Interface将这些功能与Java程序进行接口连接。

任何人都可以给我其他提示…我非常需要更快地读取文件。我尝试使用缓冲输入,但是仍然不能提供接近C ++的性能。

编辑:我的代码跨几个文件,非常脏,因此我要介绍一下

import java.io.*;

public class tmp {

public static void main(String args[]) {

try{

InputStream file = new BufferedInputStream(new FileInputStream("1.2.fasta"));

char ch;

while(file.available()!=0) {

ch = (char)file.read();

/* Do processing */

}

System.out.println("DONE");

file.close();

}catch(Exception e){}

}

}

回答:

我用183 MB文件运行了此代码。它打印了“经过250毫秒”。

final InputStream in = new BufferedInputStream(new FileInputStream("file.txt"));

final long start = System.currentTimeMillis();

int cnt = 0;

final byte[] buf = new byte[1000];

while (in.read(buf) != -1) cnt++;

in.close();

System.out.println("Elapsed " + (System.currentTimeMillis() - start) + " ms");

以上是 Java:InputStream太慢,无法读取大文件 的全部内容, 来源链接: utcz.com/qa/430694.html

回到顶部