Java file operation, how to insert content into the specified location (not replace content)?
光阴似箭催人老,日月如移越少年。
There is no real insertion of files because the file size is determined. So the source file can only be replaced with a temporary file.
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(); }
https://stackoverflow.com/que...
Please refer to this:
https://faceghost.com/questio...
There is no real insertion of files because the file size is determined. So the source file can only be replaced with a temporary file.
https://stackoverflow.com/que...
Please refer to this:
https://faceghost.com/questio...