0

我有一个写出一些数据的程序 - 我正在使用这个逻辑

FileOutputStream outpre = new FileOutputStream(getfile());
FileChannel ch = outpre.getChannel();
ch.position(startwr);
ch.write(ByteBuffer.wrap(dsave));
outpre.close();

它将正确的数据写入正确的位置,唯一的问题是要写入的起始位置(startwr)之前的所有内容都被替换为 00,并且文件也被更改,使得写入完成的点,结束文件。

如何在不损坏先前数据和更改文件大小的情况下将数据写入文件?

4

2 回答 2

2

您需要指示流追加或覆盖文件的内容...

查看FileOutpuStream(File, boolean)更多详细信息

更新

经过一番折腾,我发现我可以接近工作的唯一解决方案是......

RandomAccessFile raf = null;

try {
    raf = new RandomAccessFile(new File("C:/Test.txt"), "rw");
    raf.seek(3);
    raf.writeBytes("BB");
} catch (IOException exp) {
    exp.printStackTrace();
} finally {
    try {
        raf.close();
    } catch (Exception e) {
    }
}
于 2013-05-21T05:11:31.853 回答
0

你可以这样修复

FileChannel fc = FileChannel.open(getFile().toPath(), StandardOpenOption.APPEND);
于 2013-05-21T05:37:28.040 回答