JDK1.7 présente la nouvelle classe d'opération de fichier java.nio.file package. Il existe une classe de fichiers qui contient de nombreuses méthodes utiles pour faire fonctionner des fichiers, tels que la vérification si le fichier est un fichier caché ou vérifie si le fichier est un fichier en lecture seule. Les développeurs peuvent également utiliser la méthode files.readallbytes (path) pour lire le fichier entier en mémoire. Cette méthode renvoie un tableau d'octets et peut également transmettre le résultat au constructeur de chaîne pour créer une sortie de chaîne. Cette méthode garantit que lorsque tous les contenus d'octets du fichier sont lus, la ressource est fermée, qu'il existe une exception IO ou une autre exception non contrôlée. Cela signifie qu'après avoir lu le fichier au dernier contenu de bloc, il n'est pas nécessaire de fermer le fichier. Notez que cette méthode ne convient pas à la lecture de fichiers volumineux car il peut y avoir un espace mémoire insuffisant. Les développeurs doivent également spécifier le codage de caractère du fichier pour éviter toute exception ou erreurs d'analyse.
Le code source de ReadAllBytes (Path) Méthode:
<span style = "font-size: 32px;"> </span> <span style = "font-size: 18px;"> / ** * lit tous les octets à partir d'un fichier. La méthode garantit que le fichier est * fermé lorsque tous les octets ont été lus ou qu'une erreur d'E / S, ou une autre exception d'exécution *, est lancée. * Notez que cette méthode est destinée à des cas simples où il est * pratique de lire tous les octets dans un tableau d'octets. Il n'est pas destiné à * lire dans les fichiers volumineux. * * @param chemin * le chemin du fichier * * @return un tableau d'octet contenant les octets lus dans le fichier * * @throws ioException * Si une erreur d'E / S se produit à partir du flux * Si 2G plus 2G du fichier est une exception de mémoire ne peut pas être allocate * * @Throws SecurityException * Dans le cas du fournisseur par défaut, et un gestionnaire de sécurité est * installé, la méthode {@Link SecurityManager # CheckRead (String) CheckRead} * est invoquée pour vérifier l'accès en lecture au fichier. * / </span> <span style = "font-size: 18px;"> public static octet [] readallBytes (path path) lance ioException {try (SeekableByTechannel sbc = files.newbytechannel (path); inputStream in = channels.newinputStream (sbc)) {//jdk1.7 try-with-re-usine = sbc.size (); if (size> (long) max_buffer_size) lancez un nouveau outofMemoryError ("la taille du tableau requise trop grande"); Retour Read (in, (int) Taille); }} </span>Une seule ligne du fichier est lue
Package EntryNio; Importer java.io.ioException; import java.nio.file.files; import java.nio.file.paths; classe publique BufferandChannel {public static void main (String [] args) {try {System.out.println (new String (files.readallbytes (paths.get ("c: //filechannelImpl.java")))))); } catch (ioException e) {e.printStackTrace (); }}}Le code source de la méthode des lectures
public static list <string> readAlllines (path path, charset cs) lève ioException {try (buffereDader reader = newBuffereDader (path, cs)) {list <string> result = new ArrayList <> (); for (;;) {String line = reader.readline (); if (line == null) casser; résultat.add (ligne); } Retour Résultat; }} Package EntryNio; Importer java.util.list; Importer java.io.ioException; Importer java.nio.charse.standardCharsets; import java.nio.file.files; import java.nio.file.paths; classe publique BufferandChannel {public static void main (String [] args) {// S'il s'agit d'un fichier texte, vous pouvez également le lire comme ça. Appelez la méthode readalllines try {<span style = "white-space: pre"> </span> // Le deuxième paramètre peut être omis après JDK1.8. La valeur par défaut est la liste d'encodage UTF-8 <string> lines = files.readalllines (paths.get ("c: //filechanneLimpl.java"), standardCharsets.utf_8); StringBuilder sb = new StringBuilder (); for (String Line: Lines) {sb.append (line + "/ n"); // / r / n newline} string fromfile = sb.toString (); System.out.println (FromFile); } catch (ioException e) {e.printStackTrace (); }}}Comment utiliser Java8 Streams:
Regardez d'abord l'implémentation du code source
Les lignes publiques STATIQUE STATIQUE <string> (Path Path) lève IOException {return Lines (Path, StandardCharsets.Utf_8); } Package EntryNio; Importer java.io.ioException; import java.nio.file.files; import java.nio.file.paths; classe publique BufferandChannel {public static void main (String [] args) {// java8 ajoute la méthode des lignes try {// java8 utilise le streaming pour lire des fichiers, ce qui le rend plus efficace de fichiers.lines (paths.get (<span style = "font-family: arial, helvetica, Sans-Serif; ">" c: //filechannelImpl.java "</span>)). ForEach (System.out :: println); } catch (ioException e) {e.printStackTrace (); }}}Une seule ligne est nécessaire pour lire un fichier et écrire un fichier.
Package EntryNio; import java.util.arrays; Importer java.util.list; Importer java.io.ioException; import java.nio.file.files; import java.nio.file.paths; Importer java.nio.file.standardOpenOption; classe publique BufferandChannel {public static void main (String [] args) {// java8 ajoute la méthode des lignes string filepath = "c: //filechannelimpl.java"; try {// java8 lit des fichiers dans un flux, qui est plus efficace / * files.lines (paths.get (filepath)). foreach ((line) -> {try {files.write (paths.get ("// 1.java"), line.getbytes (), standardOpenOption.Apnd); //files.copy(in, cible, target);} capture (ioexpe e.printStackTrace ();}}); * / / * Files.Readalllines (Chemin Path) Renvoie la valeur du type <string>, qui est conçue pour files.write () * parce que les fichiers.write () doivent passer dans un paramètre d'itérable <? étend CharSequence> Type * * files.write (chemin de chemin, iTable <? étend les lignes de char à carton>, OpenOption ... Options) * / list <string> stringstream = files.readalllines (paths.get (filepath)); // Parce que les fichiers.lines (path path) renvoie Stream <string>, vous pouvez utiliser la méthode suivante pour devenir liste <string> // list <string> stringStream2 = arrays.aslist ((string []) files.lines (paths.get (filepath)). ToArray ()); // StandardOpenOption est une classe d'énumération. Si le fichier est actuellement Paths.get () n'existe pas, le troisième paramètre peut être sélectionné comme standardOpenOption.create_new // Si le fichier existe, jetez java.nio.file.filealreadyExistSException Files.Write (paths.get ("c: //2.java"), stringstream, standardOpenOption.create_new); } catch (ioException e) {e.printStackTrace (); }}}L'article ci-dessus JDK1.7 java.nio.file.files ne nécessite qu'une seule ligne de code pour réaliser le fichier ci-dessus. C'est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.