62,614
社区成员
发帖
与我相关
我的任务
分享
文件系统本身至少支持4GB的文件,所以我猜这个问题不是Java生成的文件有限制。
如果是程序只能生成最大64kB的文件,这很可能是由于磁盘分区被设置成某种非常古老的文件系统,可能是FAT16的文件系统。
如果是程序一次只能写入64kB的数据,这应该跟剩余内存有关,剩余内存无法分配64kB的时候就会抛出OutOfMemory错误。
会导致内存不够的原因很可能是程序中分配内存的那部分代码申请过多内存了。一般的电脑不会刚好只剩64kB的堆空间,多数是因为程序导致内存溢出。
解决方法为:确保所用的磁盘分区至少是Fat32或更新的文件系统,并清理出足够的空间;清理进程,保证内存至少有200MB;启用虚拟内存;根据剩余内存情况创建byte[]对象,并检查所有的容器、数组和对象的总大小是否超过范围;至少使用JDK1.6版本。
import java.io.*;
public class HelloJava {
public static void main(String[] args) throws Exception {
FileOutputStream fos=new FileOutputStream("c:/test.dat");
byte[] data=new byte[256*1024];
fos.write(data);
fos.flush();
fos.close();
System.out.println("数据已成功写入。");
}
}