java 插入 文件_通过Java将文本插入现有文件

好的,这个问题是相当老的,但是FileChannels存在于Java 1.4之后,我不知道为什么在处理在文件中替换或插入内容的问题时,它们没有被提及。

FileChannels快,使用它们。

这是一个例子(忽略异常和其他一些东西):

public void insert(String filename, long offset, byte[] content) {

RandomAccessFile r = new RandomAccessFile(new File(filename), "rw");

RandomAccessFile rtemp = new RandomAccessFile(new File(filename + "~"), "rw");

long fileSize = r.length();

FileChannel sourceChannel = r.getChannel();

FileChannel targetChannel = rtemp.getChannel();

sourceChannel.transferTo(offset, (fileSize - offset), targetChannel);

sourceChannel.truncate(offset);

r.seek(offset);

r.write(content);

long newOffset = r.getFilePointer();

targetChannel.position(0L);

sourceChannel.transferFrom(targetChannel, newOffset, (fileSize - offset));

sourceChannel.close();

targetChannel.close();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值