我需要在Java中对大文件执行简单的grep和其他操作。我不熟悉Java NIO实用程序,但我认为这是我需要使用的。您有什么资源或有用的技巧来读/写大文件。此外,我正在开发一个SWT应用程序,需要在GUI的文本区域内显示该数据的一部分。
答案 0 :(得分:3)
java.io.RandomAccessFile
使用long来进行文件指针偏移,因此应该能够应对。但是,您应该一次读取一个块,否则开销会很高。 FileInputStream
的工作方式类似。
Selector
或类似的东西。实际上,在JDK7之前,您无法选择文件。但是,请避免映射文件。没有unmap,所以如果你试图做很多,你将耗尽32位系统上的地址空间,或遇到其他问题(NIO会尝试调用GC,但这有点像黑客攻击)。 / p>
答案 1 :(得分:2)
如果您所做的只是一次读取整个文件的一个块,没有特殊处理,那么nio和java.io.RandomAccessFile
可能有点过分。只需一次读取并处理文件的内容。确保您使用BufferedInputStream
或BufferedReader
。
如果您必须阅读整个文件以执行您正在执行的操作,并且您一次只能读取一个文件,那么您将从nio中获益匪浅。
答案 2 :(得分:1)
可能有点偏离主题:通过apache查看VFS。它本来就是一个用于隐藏ftp-http文件的库 - 从应用程序的角度来看,文件系统外观背后的任何系统。我在这里提到它是因为我有很好的经验来访问大文件(通过ftp)进行搜索,阅读,复制等(在这个上下文中意味着大于15MB)这个库。