Question

Est-il possible d'étendre la mémoire tampon octet de mémoire mappée Java telle que la nouvelle taille se reflète dans le fichier mappée sur le disque?

Était-ce utile?

La solution

Non, vous devez ajuster la taille du fichier sous-jacent et recréer la mémoire mappée octet tampon.

RandomAccessFile file = new RandomAccessFile(/* some file */);
MappedByteBuffer buffer = file.getChannel().map(MapMode.READ_WRITE, 0, file.length());

// Some stuff happens...

// adjust the size
file.setLength(newLength);

// recreate the memory mapped buffer
buffer = file.getChannel().map(MapMode.READ_WRITE, 0, file.length());

Note: Réglage de la longueur du fichier a un comportement un peu bizarre. Si vous écrivez au fichier via la carte à une position spécifique qui est au-delà de la fin du fichier (soit en utilisant map.position () ou map.putX (position, ...)) les valeurs seront ajoutées à la fin de le fichier et non écrit à la position que vous attendez (sur linux au moins). Si ce comportement est indésirable, vous devez ajouter des données au fichier afin de vraiment développer le fichier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top