我有一个写出一些数据的程序 - 我正在使用这个逻辑
FileOutputStream outpre = new FileOutputStream(getfile());
FileChannel ch = outpre.getChannel();
ch.position(startwr);
ch.write(ByteBuffer.wrap(dsave));
outpre.close();
它将正确的数据写出到正确的位置,唯一的问题是在写入的起始位置(startwr)之前的所有内容都被替换为00,并且文件也被更改为写入完成的点,文件的结尾。
如何在不破坏以前数据和更改文件大小的情况下将数据写入文件?
答案 0 :(得分: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) {
}
}
答案 1 :(得分:0)
你可以这样修理
FileChannel fc = FileChannel.open(getFile().toPath(), StandardOpenOption.APPEND);