Question

S'il vous plaît me montrer les meilleurs / méthodes rapides pour:

1) Chargement petits fichiers binaires en mémoire. Pour les icônes par exemple;

2) Chargement / lecture très gros fichiers binaires de taille 512Mo +. Peut-être que je dois utiliser IO mémoire mappée?

3) Votre choix commun lorsque vous ne voulez pas penser à la taille / vitesse, mais doit faire seule chose: lire tous les octets dans la mémoire

Merci !!!

P.S. Désolé pour la question peut-être trivial. S'il vous plaît ne pas le fermer;)

P.S.2. Miroir de question analogique pour C #;

Était-ce utile?

La solution

Pour les fichiers de mémoire mappées, java a un paquet nio: mémoire mappée fichiers

Consultez la classe de flux d'octets pour les petits fichiers: octet flux

Vérifiez E / S en mémoire tampon pour des fichiers plus volumineux: Buffered flux

Autres conseils

La façon la plus simple à lire un petit fichier en mémoire est:

// Make a file object from the path name
File file=new File("mypath");
// Find the size
int size=file.length();
// Create a buffer big enough to hold the file
byte[] contents=new byte[size];
// Create an input stream from the file object
FileInputStream in=new FileInutStream(file);
// Read it all
in.read(contents);
// Close the file
in.close();

Dans la vraie vie, vous aurez besoin des blocs try / catch en cas d'erreurs d'E / S.

Si vous lisez un fichier grand, je suggère fortement la lecture de tout pas en mémoire à un moment donné si elle peut éventuellement être évité. Lisez et traiter en morceaux. Il est une application très rare qui a vraiment besoin de tenir un fichier de 500 Mo en mémoire à la fois.

Il n'y a pas une telle chose comme E / S de mémoire mappée en Java. Si c'est ce que vous devez faire, vous auriez juste pour créer un tableau d'octets vraiment grand.

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