Question

Je suis en train d'écrire une implémentation de test d'accès aux données et j'ai besoin un accès aléatoire au contenu du fichier. Voici le code:

RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rwd");
final byte b[] = IOUtils.toByteArray(source);
randomAccessFile.write(b, (int) offset, size);

où décalage est de type long. Pourquoi ne fournit pas RandomAccessFile méthode:

public void write(byte b[], long off, int len)

Comment passer outre ce problème?

Était-ce utile?

La solution

Je pense que vous êtes à la recherche de la méthode de seek.

Le décalage en write est un décalage dans le tableau. Les tableaux ont des décalages de int. Il y a eu des propositions pour « longues tableaux », mais ont été mis en œuvre ces, vous auriez encore besoin d'une surcharge.

Les fichiers mappées dans NIO ont un problème en ce que le MappedByteBuffer.position équivalent pour une raison quelconque utilise uniquement int. Voir CR 6347833 (9 votes).

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