JDK1.7 Presenta la nueva clase de operación de archivo java.nio.file paquete. Hay una clase de archivos que contiene muchos métodos útiles para operar archivos, como verificar si el archivo es un archivo oculto o verificar si el archivo es un archivo de solo lectura. Los desarrolladores también pueden usar el método Files.ReadallBytes (ruta) para leer todo el archivo en la memoria. Este método devuelve una matriz de bytes y también puede pasar el resultado al constructor de cadenas para crear la salida de cadena. Este método asegura que cuando se lean todos los contenidos de bytes del archivo, el recurso se cierra independientemente de si existe una excepción IO u otra excepción sin control. Esto significa que después de leer el archivo al último contenido de bloque, no hay necesidad de cerrar el archivo. Tenga en cuenta que este método no es adecuado para leer archivos grandes porque puede haber un espacio de memoria insuficiente. Los desarrolladores también deben especificar la codificación de caracteres del archivo para evitar cualquier excepción o error de análisis.
El método del código fuente de readallbytes (ruta):
<span style = "font-size: 32px;"> </span> <span style = "font-size: 18px;">/*** lee todos los bytes de un archivo. El método asegura que el archivo esté * cerrado cuando todos los bytes se han leído o se lanza un error de E/S u otra excepción de tiempo de ejecución *. * Tenga en cuenta que este método está destinado a casos simples en los que es * conveniente leer todos los bytes en una matriz de bytes. No está destinado a * leer en archivos grandes. * * @param ruta * La ruta al archivo * * @return una matriz de bytes que contiene los bytes leídos del archivo * * @throws ioexception * Si se produce un error de E/S que se lee de la secuencia * Si mayor que 2G del archivo, una excepción de sobreflujo de memoria se lanza * @throws outOfMemoryError * Si una matriz del tamaño requerido no se puede alternar, para * el ejemplo, el archivo es más grande. * @throws SecurityException * En el caso del proveedor predeterminado, y un administrador de seguridad está * instalado, el método {@link SecurityManager#checkread (string) checkread} * se invoca para verificar el acceso de lectura al archivo. */</span> <span style = "font-size: 18px;"> public static byte [] readallBytes (ruta de ruta) arroja ioexception {try (buscar a titheChannel sbc = files.newbytechannel (ruta); inputstream in = canals.newinputStream (sbc)) {//jdk1.7 try-with-resource size sbc.size (); if (size> (long) max_buffer_size) arroje nuevo OutOfMemoryError ("tamaño de matriz requerido demasiado grande"); return read (en, (int) tamaño); }} </span>Solo se lee una línea del archivo
paquete entrynio; import java.io.ioException; import java.nio.file.files; import java.nio.file.path; public class 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 (); }}}El código fuente del método ReadallLines
Public static List <String> ReadallLines (ruta de ruta, Charset CS) lanza ioexception {try (bufferedReader lector = newBufferedReader (ruta, cs)) {list <string> result = new ArrayList <> (); for (;;) {String Line = Reader.ReadLine (); if (línea == nulo) ruptura; resultado.Add (línea); } resultado de retorno; }} paquete entrynio; import java.util.list; import java.io.ioException; import java.nio.charset.standardcharsets; import java.nio.file.files; import java.nio.file.path; public class BufferAndChannel {public static void main (String [] args) {// Si es un archivo de texto, también puede leerlo así. Llame al método ReadallLines Pruebe {<span style = "White-space: pre"> </span> // El segundo parámetro se puede omitir después de JDK1.8. El valor predeterminado es la lista de codificación UTF-8 <String> Lines = files.ReadAlllines (raths.get ("c: //filechannelimpl.java"), StandardCharsets.utf_8); StringBuilder sb = new StringBuilder (); for (línea de cadena: líneas) {sb.append (línea+"/n"); ///r/n newline} String fromFile = sb.ToString (); System.out.println (fromfile); } catch (ioException e) {E.PrintStackTrace (); }}}Cómo usar transmisiones Java8:
Primero busque la implementación del código fuente
Public Static Stream <String> líneas (ruta de ruta) arroja ioexception {return líneas (ruta, StandardCharSets.utf_8); } paquete entrynio; import java.io.ioException; import java.nio.file.files; import java.nio.file.path; public class BufferAndChannel {public static void main (string [] args) {// java8 agrega el método de líneas Try {// java8 usa transmisión para leer archivos, convirtiéndolo en archivos más eficientes. sans-serif; ">" c: //filechannelimpl.java "</span>)). foreach (system.out :: println); } catch (ioException e) {E.PrintStackTrace (); }}}Solo se requiere una línea para leer un archivo y escribir un archivo.
paquete entrynio; importar java.util.arrays; import java.util.list; import java.io.ioException; import java.nio.file.files; import java.nio.file.path; import java.nio.file.StandoDardOpenOption; public class BufferAndChannel {public static void main (string [] args) {// java8 agrega el método de líneas String filePath = "c: //filechannelimpl.java"; Pruebe {// java8 lee archivos en una transmisión, que es más eficiente/*files.lines (paths.get (filePath)). foreach ((línea)-> {try {files.write (paths.get ("// 1.java"), line.getBytes (), StandardOpeNoption.append); //files.copy, objetivo, Opciones, opciones);} (} (iTt (itht)) {Iti));}) E.PrintStackTrace (); * / /* Files.ReadAlllines (ruta ruta) El método Devuelve el valor del tipo de lista <string>, que está diseñado para files.write ()* porque fils.write () debe pasar en un parámetro de iterable <? extiende CharSequence> Tipo * * files.write (ruta de ruta, ITerable <? Extendes CharSequence> Líneas, OpenOption ... Opciones) */ List <String> StringStream = Files.ReadAllLines (Paths.get (filePath)); // porque files.lines (ruta ruta) Devuelve Stream <String>, puede usar el siguiente método para convertirse en List <String> // List <String> StringStream2 = Arrays.aslist ((String []) files.lines (Paths.get (filePath)). ToArray ()); // StandardOpenOption es una clase de enumeración. Si el archivo actualmente no existe Paths.get (), el tercer parámetro se puede seleccionar como StandardOpenOption.Create_New // Si el archivo existe, tire java.nio.file.filealreadyexistsexception excepción de excepción.write (paths.get ("c: //2.java"), stringstrespenopenoption.create_new); } catch (ioException e) {E.PrintStackTrace (); }}}El artículo anterior JDK1.7 java.nio.file.files solo requiere una línea de código para realizar el archivo anterior. Este es todo el contenido que comparto con ustedes. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.