Transmisión de entrada y salida de archivo
El archivo de entrada y salida de archivo FileInputStream y FileOutputStream son responsables de completar las operaciones secuenciales de entrada y salida de los archivos de disco locales.
[Ejemplo] Cree un archivo a través de un programa, ingrese los caracteres desde el teclado, finalice cuando se encuentre el personaje "#" y se muestran todos los contenidos del archivo en la pantalla
import java.io.*; clase EP10_5 {public static void main (string args []) {char ch; nuevo fileOutputStream ("EP10_5"); '#') {B.Write (CH); (Filedescriptor.out); ) {System.out.println ("Este archivo no se puede encontrar!");
FileDeScriptor es una clase en Java.io. Entrada estándar.
[Ejemplo] Implementar copia de seguridad de archivos de gráficos binarios (.gifs)
import java.io.*; class EP10_6 {public static void main (string args []) lanza ioexception {fileInputStream a = newInputStream ("ep10_6.gif"); System .out.println ("El tamaño del archivo es:"+A.available ()); la matriz B.write (c); ;
Flujo de filtro
FilterInputStream y FileOutputStream son subclases directas de InputStream y OutputStream.
Las dos secuencias de filtrado de uso común son el flujo de entrada de datos DataintStream y la transmisión de salida de datos DataOutputStream. Su método de construcción es:
DataInputStream (InputStream IN);
Dado que DataInputStream y DataOutputStream implementan las operaciones de lectura y escritura formateadas definidas en las interfaces de DataAnput y DataOutput (las dos interfaces especifican los métodos de entrada y salida de datos de tipo básico), las operaciones de lectura y escritura formatadas se realizan para diferentes tipos de datos de lectura y escritura de datos. Se puede ver en el método de construcción que los flujos de entrada y salida se utilizan respectivamente como parámetros de métodos de construcción de las secuencias de entrada y salida de datos, es decir, como las secuencias filtradas, deben estar conectados a las secuencias de datos correspondientes.
Las clases de DataInputStream y DatautputStream proporcionan muchos métodos de lectura y escritura para diferentes tipos de datos.
[Ejemplo] Escriba tres números de tipo int 100, 0 y -100 al archivo de datos EP10_6.DAT.
import java.io.*; clase EP10_7 {public static void main (string args []) {string filename = "ep10_7.dat"; DatautputStream Connect a FileOutputStream para obtener diferentes tipos de datos de datos A = nuevo DatautputStream (nuevo FileOutputStream (nombre de archivo)) } Catch (ioException i) {System.out.println ("¡Ocurrió un error!"+Nombre de archivo);
Después de ejecutar, genere el archivo de datos EP10_7.DAT en el directorio de programa.
00 00 00 64 00 00 00 00 00 FF FF FF 9C.
[Ejemplo] Lea tres números de tipo INT en el archivo de datos EP10_6.DAT, suma y pantalla.
import java.io.*; clase EP10_8 {public static void main (string args []) {string filename = "d: //myjava/ep10_7.dat"; new BufferedInputStream (nuevo FileInputStream (nombre de archivo)); + suma);
Resultados de ejecución:
La suma de tres números es: 0
El método ReadInt puede leer 4 bytes de la secuencia de entrada y salida y participar directamente en la operación como datos de tipo int-Type. Dado que ya sabe que hay 3 datos en el archivo, puede usar 3 declaraciones de lectura, pero ¿qué debe hacer si solo sabe que hay datos de tipo INT en el archivo pero no sabe la cantidad de datos? ? Porque si se encuentra la operación de lectura de DataInputStream, se lanzará una EOFException al final del archivo, la operación de lectura se puede poner en la prueba.
Pruebe {while (true) sum+= a.ReadInt ();} Catch (EofException e) {System.out.pritnln ("La suma de tres números es:"+suma);
EOFException es una subclase de IOException.
[Ejemplo] Ingrese un entero desde el teclado y encuentre la suma de los dígitos del número.
import java.io.*; clase EP10_9 {public static void main (string args []) lanza IOException {DataAnputStream A = New DataInputStream (System.in) b = A.Raintint (); sum = suma+d;
Resultados de ejecución:
Ingrese un número entero: 26842403082 La suma de los dígitos = 31
Cabe señalar que los datos de entrada 26 se han convertido en 842403082. La razón es que los datos de entrada no se ajustan al formato del tipo básico de datos. , solo representa 2 y 6. Datos de bytes de dos caracteres, no código de byte que representa Integer 26.
Para obtener enteros del teclado, primero debe leer la cadena y luego usar otros métodos para convertir la cadena en enteros.
Entrada y salida estándar
System.in, System.out y System.err se definen en el paquete Java.Lang.System.
Entrada estándar: el sistema de entrada estándar. .
Salida estándar: el sistema de salida estándar. La clase PrintStream es una subclase de la clase de transmisión de salida filtrada FilterOutputPutStream, que define los métodos print () e println () que generan diferentes tipos de datos a la pantalla.
Salida de error estándar: System.err se usa para mostrar mensajes de error a los usuarios y también es un flujo de error derivado de la clase PrintStream. La función de la secuencia ERR es hacer información de salida print () e println () en la secuencia ERR y mostrarla en la pantalla para que la conveniencia de los usuarios use y depure programas.
[Ejemplo] Ingrese una cadena de caracteres para mostrarlo y mostrar las clases a las que pertenecen System.in y System.out.
import java.io.*; clase EP10_10 {public static void main (string args []) {try {byte a [] = new byte [128]; Cadena: "); int count = system.in.read (a); // leer la transmisión de entrada y salida estándar System.out.println (" La entrada es: "); para (int i = 0; i <count; i ++) System.out.print (a [i]+""); // El retorno de carro y la línea no se muestran System.out.print ((char) A [i]+""); El número es: "+count); class inclass = system.in.getClass (); class outClass = system.out.getclass (); system.out.println (" en la clase donde el elemento es: "+inclass.t Ostring ());
Los resultados de la ejecución son los siguientes:
Cabe señalar que después de ingresar 3 caracteres y presionar ENTER, el resultado de la salida se muestra como 5 caracteres. Esto se debe a que el retorno del carro se trata como dos caracteres en Java, uno es un retorno de carro con ASCⅱ 13 y el otro es una ruptura de línea con un valor de 10. En el programa, getClass () y toString () son métodos de la clase de objeto, que se utilizan respectivamente para devolver la clase correspondiente al objeto actual y devolver la representación de cadena del objeto actual.