编辑文件而不必遍历整个字节缓冲区?

时间:2012-05-03 04:53:44

标签: java android file file-io

我想在一个大小为100MB的文件中“覆盖”或“切换”一些字节(比如文件中的前2048个字节)和另一个字节数组。
我不想阅读整个文件,因为我需要批评时间来查看整个文件。

到目前为止我尝试过:

FileOutputStream out = new FileOutputStream(file);

out.getChannel().write(buffer, position);

新缓冲区阵列的大小相同。

我正在开发java + eclipse Android应用程序,需要这样做 如果有人能给我写一份能够完成这项工作的代码,我会很高兴的。

提前致谢。

1 个答案:

答案 0 :(得分:2)

使用data数组的内容覆盖文件的前2048个字节。

final RandomAccessFile file = new RandomAccessFile(filename, "rw");
final FileChannel channel = file.getChannel();
final byte[] data = new byte[2048];          // lets say it's got the data you want
final ByteBuffer buff = ByteBuffer.wrap(data);

channel.position(0);                         // (we were already here, but as an example)
channel.write(buff);                         // writes the entire 2028 bytes from buff
channel.force(false);                        // (superfluous if you close() afterwards)
channel.close();                             // close the file descriptor