Tag: 大文件

如何使用POI加载大型xls文件时解决java堆空间错误

我正在尝试加载和解析一个11mb的xls文件,我正在使用WorkbookFactory.create(myFile)来加载它。但是我无法加载这个文件并解析它。任何人都可以帮助我解决这个问题我在我的程序中使用的代码, public class LargeExcelManager { private Workbook wb ; public Workbook getWb() { return wb; } public void setWb(Workbook wb) { this.wb = wb; } public LargeExcelManager(String fileName)throws Exception { openWorkbook(fileName); } private void openWorkbook(String fileName)throws Exception { try { System.out.println(“Can be added now”); File myFile = new File(fileName); this.setWb(WorkbookFactory.create(myFile)); // Here i am trying […]

XML:处理大数据

您为以下目的推荐的XML解析器是什么: XML文件(格式化,包含空格)大约为800 MB。 它主要包含三种类型的标签(我们称之为n,w和r)。 他们有一个名为id的属性,我必须尽快搜索。 删除我不需要的属性可以节省大约30%,也许更多。 优化第二部分的第一部分:是否有任何好的工具(如果可能的话,命令行linux和windows)可以轻松删除某些标签中未使用的属性? 我知道可以使用XSLT。 或者有任何简单的替代方案吗? 此外,我可以将它分成三个文件,每个标签一个文件以获得速度以便以后解析…速度对于这种数据准备来说并不重要,当然,当花费相当于几分钟而不是几小时时,它会很好。 第二部分:一旦我准备好数据,无论是否缩短,我都应该能够搜索我提到的ID属性,这对时间要求很高。 使用wc -l估计告诉我,有大约3M N标签和大约418K W标签。 后者最多可包含大约20个子标签。 W-Tags也包含一些,但它们会被剥离。 “我所要做的就是”在包含某些id属性的标签之间导航。 有些标签引用了其他id,因此给了我一棵树,甚至可能是图表。 原始数据很大(如上所述),但结果集不应该太大,因为我只需挑选出某些元素。 现在的问题是:我应该使用哪种XML解析库进行这种处理? 我会首先使用Java 6,并考虑将其移植到BlackBerry。 创建一个索引id并指向文件中偏移量的平面文件可能有用吗? 是否有必要进行上部提到的优化? 或者已知解析器与原始数据一样快? 小注意:为了测试,我将id放在文件的最后一行,并使用grep搜索id。 在Core 2 Duo上花了大约一分钟。 如果文件变得更大,会发生什么呢?比方说5 GB? 我感谢任何通知或建议。 非常感谢大家提前和问候

Java:InputStream读取大文件太慢了

我必须按字符读取53 MB的文件。 当我使用ifstream在C ++中完成它时,它在几毫秒内完成,但使用Java InputStream需要几分钟。 Java很慢或者我错过了什么是正常的吗? 另外,我需要用Java完成程序(它使用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){} } }

有关处理大量数据的建议

所以我有一个“大”的数字数据的“非常大”的ASCII文件(一共几千兆字节),我的程序需要至少按顺序处理整个数据。 有关存储/加载数据的建议吗? 我曾想过将文件转换为二进制文件以使它们更小并加快加载速度。 我应该一次性将所有内容加载到内存中吗? 如果没有,是否打开了部分加载数据的好方法? 什么是与Java相关的效率提示?