JAVA怎么处理大于2G甚至20G的文件?

peer3002 2010-08-08 09:22:48
1. JAVA怎么处理大于2G甚至20G的文件?

2. mappedByteBuffer是不是没有底层实现数组? 也就是说:mappedByteBuffer.array() 没用是吗?
...全文
897 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
处理大文件?这“处理”的讲究可就大了!

先把“提问的智慧”看一下再来问吧!
http://community.csdn.net/IndexPage/SmartQuestion.aspx
peer3002 2010-08-09
  • 打赏
  • 举报
回复
long start = 0L;
long bufSize = 4096000L;

MappedByteBuffer mapBuffer = fc.map(FileChannel.MapMode.READ_WRITE, start,bufSize);

...

long start = start + bufSize;

MappedByteBuffer mapBuffer = fc.map(FileChannel.MapMode.READ_WRITE, start,bufSize);

...
peer3002 2010-08-09
  • 打赏
  • 举报
回复
第二个问题:mappedByteBuffer 是直接缓冲,所以缓冲区还在os的内存里,不在java的内存区域内,所以应该没有底层实现数组。要用的话要自己定义数组,再从buffer读到数组(java的内存区域内}。
peer3002 2010-08-09
  • 打赏
  • 举报
回复
昨晚一宿未眠,终于想到了办法。就如 redduke1202 所说,分部分处理,最好用mappedByteBuffer,这样效率要高很多。

早上想来,还是自己对深入的细节不真正理解所致。看来还要认真读书理解才不会有这样的愚蠢问题。

感谢大家的关注!
yushiqiang1688 2010-08-08
  • 打赏
  • 举报
回复
RandomAccessFile吧,详细见JDK帮助文档!
dr_lou 2010-08-08
  • 打赏
  • 举报
回复
RandomAccessFile吧,用多少读多少。
w_s254322 2010-08-08
  • 打赏
  • 举报
回复
写几个线程,分部执行!
「已注销」 2010-08-08
  • 打赏
  • 举报
回复
超大文件的话,只能一部分一部分处理
java里的byte[],最大只支持 2G-1字节长吧
因为数组的 length属性是int
宅男小何 2010-08-08
  • 打赏
  • 举报
回复
关注、、、、

62,614

社区成员

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

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