有关使用Java处理大型文件的一些技巧

时间:2009-02-25 15:17:41

标签: java nio large-files

我需要在Java中对大文件执行简单的grep和其他操作。我不熟悉Java NIO实用程序,但我认为这是我需要使用的。您有什么资源或有用的技巧来读/写大文件。此外,我正在开发一个SWT应用程序,需要在GUI的文本区域内显示该数据的一部分。

3 个答案:

答案 0 :(得分:3)

java.io.RandomAccessFile使用long来进行文件指针偏移,因此应该能够应对。但是,您应该一次读取一个块,否则开销会很高。 FileInputStream的工作方式类似。

Java NIO不应该太难。您不需要使用Selector或类似的东西。实际上,在JDK7之前,您无法选择文件。但是,请避免映射文件。没有unmap,所以如果你试图做很多,你将耗尽32位系统上的地址空间,或遇到其他问题(NIO会尝试调用GC,但这有点像黑客攻击)。 / p>

答案 1 :(得分:2)

如果您所做的只是一次读取整个文件的一个块,没有特殊处理,那么nio和java.io.RandomAccessFile可能有点过分。只需一次读取并处理文件的内容。确保您使用BufferedInputStreamBufferedReader

如果您必须阅读整个文件以执行您正在执行的操作,并且您一次只能读取一个文件,那么您将从nio中获益匪浅。

答案 2 :(得分:1)

可能有点偏离主题:通过apache查看VFS。它本来就是一个用于隐藏ftp-http文件的库 - 从应用程序的角度来看,文件系统外观背后的任何系统。我在这里提到它是因为我有很好的经验来访问大文件(通过ftp)进行搜索,阅读,复制等(在这个上下文中意味着大于15MB)这个库。