天天看點

java access插入_通過Java将文本插入現有檔案

java access插入_通過Java将文本插入現有檔案

暮色呼如

好的,這個問題已經很老了,但是FileChannels自Java 1.4起就存在了,我不知道為什麼在替換或插入檔案内容的問題上沒有提到它們。FileChannel很快,請使用它們。這是一個示例(忽略異常和其他内容):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();}