Question

Je veux obtenir un flux de quelque position arbitraire dans un fichier existant, par exemple, je dois lecture / écriture de / vers un fichier commençant par octet 101e. Est-il sûr d'utiliser quelque chose comme ça?

final FileInputStream fin = new FileInputStream(f);
fin.skip(100);

Passer javadoc indique que il peut parfois sauter plus petit nombre d'octets que spécifié. Que dois-je faire?

Était-ce utile?

La solution

Qu'en est-ce qui suit:

final RandomAccessFile raf = new RandomAccessFile(f, mode);
raf.seek(100);
final FileInputStream fin = new FileInputStream(raf.getFD());
// read from fin

Autres conseils

vous ne pouvez pas écrire en utilisant un FileInputStream. vous devez utiliser un RandomAccessFile si vous voulez écrire à divers endroits dans un fichier. eunfortunately, il n'y a pas moyen facile d'utiliser un RandomAccessFile comme InputStream / OutputStream (qui ressemble à @aix peut avoir une bonne idée d'adapter RandomAccessFile à InputStream / OutputStream), mais il existe différents adaptateurs exemple disponibles en ligne .

Une autre alternative est d'utiliser un FileChannel. vous pouvez définir la position du FileChannel directement, puis utilisez les méthodes utilitaires canaux pour obtenir InputStream / OutputStream adaptateurs au-dessus de la Manche.

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