fichiers binaires Java de chargement
-
27-09-2019 - |
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 #;
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.