【发布时间】:2011-05-27 23:10:21
【问题描述】:
在 Java 中有没有办法将一个大数组(比如整数)写入磁盘?我在 Android 上执行此操作,但尚未找到任何接近原生 C 代码的方法。
生成的文件不需要移植到具有不同表示形式的不同机器上,因此从逻辑上讲,只需批量写入底层字节就足够了。但我不知道如何通过 Java 有效地做到这一点。
我已经尝试在网上搜索,并测试了以下内容:
- 序列化 - 非常慢,正如预期的那样。
- 使用 NIO - 仍然很慢 - Android 跟踪显示每个整数一次一个操作:
提前致谢
蔚来代码:
int[] array = new array[10000000];
...
raf = new RandomAccessFile(ti.testFileName, "rw");
chan = raf.getChannel();
MappedByteBuffer out = chan.map(FileChannel.MapMode.READ_WRITE, 0, array.length*4);
ib = out.asIntBuffer();
ib.put(array);
out.force();
raf.close();
【问题讨论】:
-
如果这是 Android 而不是 Java,您的标签不应该反映这一点吗?
-
@org.life.java 这个链接讨论的是写文本而不是二进制,这不是一个更快的解决方案。
-
@Peter 这些链接对 OP 很有用,因为他想在磁盘上写入一个数组,他可以从这些链接中获得基本的想法
标签: java android performance io