我目前使用:从Java中的文本文件中读取最快的方法是什么?
BufferedReader input = new BufferedReader(new FileReader("filename"));
有一个更快的方法?
我目前使用:从Java中的文本文件中读取最快的方法是什么?
BufferedReader input = new BufferedReader(new FileReader("filename"));
有一个更快的方法?
虽然你得到的不一定是绝对最快的,但它很简单。实际上,我不会使用那么相当这种形式 - 我会使用允许指定字符集的东西,例如,
// Why is there no method to give this guaranteed charset
// without "risk" of exceptions? Grr.
Charset utf8 = Charset.forName("UTF-8");
BufferedReader input = new BufferedReader(
new InputStreamReader(
new FileInputStream("filename"),
utf8));
您可以使用NIO更快地运行它,但是直到我看到实际的问题时才会更快。如果你看到一个问题,但你正在做其他事情与的数据,请确保它们不是第一个问题:编写程序只需阅读文件的文本。不要忘记在你的机器上做任何事情来清除文件系统缓存之间的运行,尽管...
重新评论:是! – 2009-07-06 21:38:34
你怎么可以实例化InputStream? – 2009-08-07 13:12:07
调查java.nio.channels.FileChannel。
你有没有基准你的其他选项?我想在某些情况下不使用BufferedReader可能会更快 - 例如极小的文件。我会建议你至少做一些小的基准测试,并找到适合你典型用例的最快实现。
取决于你想要阅读的内容。完整的文件或特定的位置,您是否需要通过它进行分隔,或者您是否想一次读完整个文本?
如果它是/ fast /你想要的,保持字符数据的编码形式(我不是指UTF-16)。虽然磁盘I/O通常很慢(除非它被缓存),但解码和保存两倍数据也是一个问题。虽然加载速度最快的可能是通过java.nio.channels.FileChannel.map(MapMode.READ_ONLY, ...)
,但这在解除分配方面存在严重问题。
通常的注意事项适用。
File file = new File("querySourceFileName");
Scanner s = new Scanner(file);
while (s.hasNext()) {
System.out.println(s.nextLine());
}
为什么你需要这么多速度? – 2014-02-17 06:50:38