用java写文件为什么大小最多只能有64KB,要怎么改;

Grex_cn 2008-04-15 11:09:58
用java写文件为什么大小最多只能有64KB,要怎么改;
...全文
627 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
曾经我是菜 2021-07-15
  • 打赏
  • 举报
回复

文件系统本身至少支持4GB的文件,所以我猜这个问题不是Java生成的文件有限制。
如果是程序只能生成最大64kB的文件,这很可能是由于磁盘分区被设置成某种非常古老的文件系统,可能是FAT16的文件系统。
如果是程序一次只能写入64kB的数据,这应该跟剩余内存有关,剩余内存无法分配64kB的时候就会抛出OutOfMemory错误。
会导致内存不够的原因很可能是程序中分配内存的那部分代码申请过多内存了。一般的电脑不会刚好只剩64kB的堆空间,多数是因为程序导致内存溢出。
解决方法为:确保所用的磁盘分区至少是Fat32或更新的文件系统,并清理出足够的空间;清理进程,保证内存至少有200MB;启用虚拟内存;根据剩余内存情况创建byte[]对象,并检查所有的容器、数组和对象的总大小是否超过范围;至少使用JDK1.6版本。

Dudaqiang 2012-02-19
  • 打赏
  • 举报
回复
不会,因为window给你默认64k当你代码多得时候,他自然会变大,
  • 打赏
  • 举报
回复
应该是流最后没有 close() 吧?
TreeMan 2012-02-19
  • 打赏
  • 举报
回复
楼主问题是否已经解决?
酒剑仙 2009-02-27
  • 打赏
  • 举报
回复
不懂什么意思。
楼主莫非不flush 把内存空间占满了》
createWang 2009-02-27
  • 打赏
  • 举报
回复
硬盘有多大,文件就可以写多大。
时光瞄 2009-02-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lbfhappy 的回复:]
想写多大就多大,写到WINDOWS不认识为止
[/Quote]
numen_wlm 2009-02-27
  • 打赏
  • 举报
回复
思想有多远,我们就可以写多远。。
wangsuwen 2009-02-26
  • 打赏
  • 举报
回复
7G A片啊 那么大
ch2004 2009-02-26
  • 打赏
  • 举报
回复
我写过一个7G的txt ,结果不能复制,倒是可以删除
「已注销」 2008-04-15
  • 打赏
  • 举报
回复
不可能的事情,代码能贴出来?
云上飞翔 2008-04-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 Grex_cn 的帖子:]
用java写文件为什么大小最多只能有64KB,要怎么改;
[/Quote]
答:谁说的啊。如下代码运行很正常啊:
FileOutputStream fos=new FileOutputStream("c:/test.dat");
byte[] data=new byte[256*1024];
fos.write(data);
fos.flush();
fos.close();
xukai_286 2008-04-15
  • 打赏
  • 举报
回复
楼主说的是啥?难道写入文件的大小不能超过64k?不可能啊。
tdy218 2008-04-15
  • 打赏
  • 举报
回复
第一次听说,期待解决办法。顶!~
healer_kx 2008-04-15
  • 打赏
  • 举报
回复
什么意思?
不懂。。。
xiaomaha 2008-04-15
  • 打赏
  • 举报
回复
好想楼主说的是数据库!Blob字段!
frank3G 2008-04-15
  • 打赏
  • 举报
回复
MARK
云上飞翔 2008-04-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 damoqiongqiu 的回复:]
不可能的事情,代码能贴出来?
[/Quote]
答:可能的事啊。

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("数据已成功写入。");
}

}

运行结果:
数据已成功写入。
i_saw_you 2008-04-15
  • 打赏
  • 举报
回复
听说…… 学习
q1531 2008-04-15
  • 打赏
  • 举报
回复
你是不是没有flush();造成的?
加载更多回复(4)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧