Maison > Questions et réponses > le corps du texte
Opération sur un fichier Java, comment insérer du contenu dans un emplacement spécifié (et non remplacer le contenu) ?
phpcn_u15822017-06-12 09:26:18
Il n'y a pas de véritable insertion de fichiers car la taille du fichier est déterminée. Le fichier source ne peut donc être remplacé que par un fichier temporaire.
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...