当前位置: 首页 > 面试题库 >

读取Java中的大文件

莫宁
2023-03-14
问题内容

我需要非常了解Java和内存问题的人的建议。我有一个大文件(大约1.5GB),我需要将此文件切成许多小文件(例如100个小文件)。

我通常知道如何做到这一点(使用BufferedReader),但是我想知道你是否对内存有任何建议,或者提示如何更快地做到这一点。

我的文件包含文本,它不是二进制文件,每行大约有20个字符。


问题答案:

首先,如果你的文件包含二进制数据,则使用BufferedReader将是一个大错误(因为你会将数据转换为String,这是不必要的,并且很容易破坏数据);你应该BufferedInputStream改用。如果它是文本数据,并且需要沿换行符进行拆分,则使用BufferedReader OK(假定文件包含合理长度的行)。

关于内存,如果你使用大小合适的缓冲区,应该没有任何问题(我将至少使用1MB的内存来确保HD主要执行顺序读取和写入操作)。

如果发现速度有问题,你可以看看这些java.nio包装-据说它们比java.io



 类似资料:
  • 我正在使用Java开发一个web应用程序,在这里我有一个方法可以读取。使用apache poi的xlsx文件: 该方法工作正常,但是该方法处理具有数千行记录的文件的可能性有多大,例如,大约2530万行。当处理一个大文件时,我采取以下异常: 我需要知道如何避免这种错误。例如,如果有,请读取并处理该文件。xlsx 1000至1000线,或其他解决方案。

  • 问题内容: 我有一个文本文件。我想从一行到另一行检索内容。例如,文件可以是200K行。我想从第78行到第2735行读取内容。由于文件可能很大,所以我不想将整个内容读取到内存中。 问题答案: 这是一个可能的解决方案的开始:

  • 问题内容: 我需要在Java应用程序中读取Excel 2007 XLSX文件。有谁知道一个很好的API来完成这项任务? 问题答案: AFAIK还没有可用的xlsx库。但是有些旧的xls: 一个库是jxls,它内部使用已经提到的POI。 其他2个链接:处理Excel文件,用于读写Excel XLS文档文件的Java库 。

  • 问题内容: 我正在尝试将.MID文件读入Java程序,并希望将每个音符/和弦分开,以便在某种UI上显示它们。我在Java中使用Sequencer API的运气并不好,尝试直接使用MidiFileReader也不适合我。如果有人想看的话,我将附上我在这里使用的代码: 问题答案: 我从来没有深入研究过Java对MIDI的支持,而上一次我认真地进行MIDI编程是在Commodore Amiga成为国王的

  • 问题内容: 是否有一个Java库可以读取很大图像(例如JPEG)文件(> 10,000 x 10,000像素)的区域,而无需将整个图像保留在内存中。 或者,哪个Java库能够以最小的开销处理非常大的图像文件。 问题答案: 标准ImageIO允许您读取(大)图像区域,而无需先将整个图像读取到内存中。

  • 本文向大家介绍Java实现按行读取大文件,包括了Java实现按行读取大文件的使用技巧和注意事项,需要的朋友参考一下 Java实现按行读取大文件 网上流行的那个俩while版本不靠谱 可考虑bufferedinputstream和bufferedoutputstream来字节读取,这个代码太简单了,适用于非频繁操作。或采用nio的FileChannel,比较适合于高并发操作,如下为filechann