2016-05-19 3 views
1

J'ai besoin de faire quelques opérations de base sur le fichier image dans Java. Mes exigences sont comme:
- ouverture d'un fichier. - Lit les octets dans un certain ordre. - écrire l'octet mis à jour au décalage particulier - recherche à un certain décalage dans le fichier.Quel est le meilleur moyen pour les fichiers IO en Java

Les fichiers peuvent être de n'importe quelle taille comme des fichiers image de 2 Go.

Je veux savoir, quelle classe dans java peut me fournir la flexibilité de faire toutes ces opérations avec facilité et avec l'efficacité des performances, en considérant IO en Java est lent.

Actuellement, je considère FileChannel, mais je ne connais pas ses performances avec des fichiers de plus grande taille comme en GB. Il sert aussi à lire les octets de fichiers dans ByteBuffer, mais si le fichier est assez grand, est-il approprié de lire tous les octets en même temps ou devrait-il lire en morceaux. Si je lis des données en morceaux, quelle est la taille appropriée d'un morceau?

Veuillez me guider.

Merci

Répondre

1

Vous devriez probablement utiliser RandomAccessFile, il prend en charge cherchent par position et écrire. Aussi je ne pense pas qu'il est juste de décrire IO dans Java comme lent, souvent vous pouvez obtenir des performances comme C si vous utilisez java.io correctement.

0

Vous pouvez utiliser Java 8 Caractéristiques flux

Stream<String> lines = Files.lines(Paths.get(args[1])); 

Mais, si vous ne l'utilisez Java-8. Vous utilisez java.nio package

Si je lis des données dans des blocs, quelle est la taille appropriée d'un bloc?

Vous pouvez utiliser une taille de tampon de seulement 1 Ko.