我试图从系统中导出一些文件并将其保存在我的驱动器中,问题是某些文件非常大,我得到了java内存错误。
FileOutputStream fileoutstream = new FileOutputStream(filenameExtension);
fileoutstream.write(dataManagement.getContent(0).getData());
fileoutstream.flush();
fileoutstream.close();
我可以尝试的任何推荐,我添加刷新但现在不同,这将调用导出方法,生成文件并保存。我,使用cursos来运行数据,我导出的不是数组,我尝试添加更多内存,但文件太大了。
答案 0 :(得分:2)
在写入之前,您正在将整个文件加载到内存中。相反,你应该:
答案 1 :(得分:1)
如果文件非常大,您可能需要以块的形式读/写它们。如果文件足够大以适合内存,则可以增加虚拟机内存的大小。
即:
java -Xmx512M ...
FileInputStream fi = infile;
FileOutputStream fo = outfile
byte[] buffer = new byte[5000];
int n;
while((n = fi.read(buffer)) > 0)
fo.write(b, 0, n);
希望这有助于实现这个想法。
答案 2 :(得分:0)
您可以使用spring批处理框架以块大小读取和写入文件。 http://static.springsource.org/spring-batch/