IO y archivos

IO y archivos

Archivo

Un objeto de la clase File, que representa un archivo o un directorio de archivos (comúnmente conocido como carpeta)

package com.atguigu.java;

import java.io.File;
import java.io.IOException;

public class FileTest {
    
    
    public static void main(String[] args) throws IOException {
    
    
        File file1 = new File("hello.txt");//相对路径,相对当前module
        System.out.println(file1.getAbsoluteFile());
        System.out.println(file1.getPath());
        System.out.println(file1.getName());
        System.out.println(file1.getParent());
        System.out.println(file1.length());
        System.out.println(file1.lastModified());


        String[] list = file1.list();
        for(String s: list){
    
    
            System.out.println(list);
        }
        File[] files = file1.listFiles();
        for(File f:files){
    
    
            System.out.println(files);
        }
        System.out.println(file1.isDirectory());
        System.out.println(file1.isFile());
        System.out.println(file1.exists());
        System.out.println(file1.canRead());
        System.out.println(file1.isHidden());

        if(!file1.exists())
            file1.createNewFile();
        else {
    
    
            file1.delete();
        }
        file1.mkdir();
        file1.mkdirs();
    }
}

La clase File implica métodos como la creación, eliminación, cambio de nombre, tiempo de modificación, tamaño del archivo, etc. de archivos o directorios de archivos, y no implica escribir o leer el contenido del archivo. Si necesita leer o escribir el contenido del archivo, debe usar el flujo de E / S para completar.

Clasificación de arroyos

  • Flujo de bytes
  • Flujo de entrada, flujo de salida
  • Flujo de nodo

Sistema de flujo

Inserte la descripción de la imagen aquí

Flujo de búfer

Al cerrar el arroyo, primero cierre el exterior y luego cierre el interior. (Cuando se cierra el flujo externo, el flujo interno se cerrará automáticamente) El
flujo de búfer lee y escribe más rápido. La lectura y la escritura abrirán un espacio en la memoria.

Flujo de conversión

Proporciona conversión entre flujo de bytes y flujo de caracteres

  • InputStreamReader

  • Ejemplo de OutputStreamWriter : convertir archivos utf-8 a archivos gbk

package com.atguigu.java;

import java.io.*;

public class HelloWorld {
    
    
    public static void main(String[] args) throws IOException {
    
    
        File file1 = new File("dbcp.txt");
        File file2 = new File("dbcp_bgk.txt");

        FileInputStream fis = new FileInputStream(file1);
        FileOutputStream fos = new FileOutputStream(file2);

        InputStreamReader isr = new InputStreamReader(fis,"utf-8");
        OutputStreamWriter osw = new OutputStreamWriter(fos,"gbk");

        char[] cbuf = new char[20];

        int len;
        while ((len = isr.read(cbuf)) != -1){
    
    
            osw.write(cbuf,0,len);
        }
        isr.close();
        osw.close();


    }
}

Flujo de entrada y salida estándar


  1. Sistema de flujo de entrada y salida estándar, en flujo de entrada estándar, la entrada predeterminada desde el teclado, el tipo es InputStream
    System, flujo de salida estándar, la salida predeterminada de la consola, el tipo es PrintStream, que es una subclase de OutputStream
  2. El método SetIn () / Setout () de la clase System vuelve a especificar los flujos de entrada y salida
  3. Ejercicio: ingrese una cadena de caracteres desde el teclado y solicite que toda la línea de la cadena de caracteres leída se convierta en salida en mayúsculas y luego continúe con la operación de entrada
package com.atguigu.java;

import java.io.*;

public class HelloWorld {
    
    
    public static void main(String[] args) throws IOException {
    
    

        InputStreamReader isr = new InputStreamReader(System.in);

        BufferedReader br = new BufferedReader(isr);
        String data;
        while(true){
    
    
            data = br.readLine();
            if("e".equals(data) || "exit".equals(data))
                break;
            String upperCase = data.toUpperCase();
            System.out.println(upperCase);
        }
        br.close();


    }
}

Flujo de impresión

PrintStream y PrinterWriter proporcionan una serie de métodos sobrecargados print () y println ()
para imprimir el método System.out.println () en el archivo especificado

package com.atguigu.java;

import java.io.*;

public class HelloWorld {
    
    
    public static void main(String[] args) throws IOException {
    
    
        PrintStream ps = null;
        try {
    
    
            FileOutputStream fos = new FileOutputStream(new File("D:\\IO\\text.txt"));
            ps = new PrintStream(fos,true);
            if(ps != null){
    
    
                System.setOut(ps);
            }

            for(int i = 0;i <= 255;i ++){
    
    
                System.out.println((char)i);
                if(i % 50 == 0)
                    System.out.println();
            }

        }catch (Exception e){
    
    
            ps.close();
        }

    }
}

flujo de datos

DataInputStream 和 DataOutputStream

package com.atguigu.java;

import java.io.*;

public class HelloWorld {
    
    
    public static void main(String[] args) throws IOException {
    
    
        DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.txt"));
        dos.writeUTF("刘建辰");
        dos.flush();
        dos.writeInt(23);
        dos.writeBoolean(true);
        dos.flush();
        dos.close(); 
    }
}

Flujo de objetos

Para que los
objetos ObjectInputStream y ObjectInputStream sean serializables, la clase de objeto debe implementar la interfaz serializable.
Función: Puede escribir el objeto en java en la fuente de datos y restaurar el objeto desde la fuente de datos.
El objeto debe especificar la constante de tipo estático serialVersionUID Los
atributos modificados estáticos y transitorios no se pueden serializar

package com.atguigu.java;

import java.io.*;

public class HelloWorld {
    
    
    public static void main(String[] args){
    
    
        ObjectOutputStream oos = null;
        try {
    
    
            oos = new ObjectOutputStream(new FileOutputStream("object.dat"));
            oos.writeObject(new String("我爱北京天安门"));
            oos.flush();
        }catch (IOException e){
    
    
            e.printStackTrace();
        }finally {
    
    
            if(oos != null)
            {
    
    
                try {
    
    
                    oos.close();
                } catch (IOException e) {
    
    
                    e.printStackTrace();
                }
            }
        }


        ObjectInputStream ois = null;
        try {
    
    
            ois = new ObjectOutputStream(new FileInputStream("object.dat"));
            Object object = ois.readObject();
            String str = (String)object;
        } catch (IOException e) {
    
    
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            if(ois != null) {
    
    
                try {
    
    
                    ois.close();
                } catch (IOException e) {
    
    
                    e.printStackTrace();
                }
            }
        }
    }
}

Tipo de archivo de acceso aleatorio

  1. RandomAccessFile hereda directamente de la clase Object e implementa las interfaces DataInput y DataOutput
  2. RandomAccessFile se puede usar como flujo de entrada y flujo de salida
  3. "R" se abre en modo de solo lectura, "rw" se abre para leer y escribir, "rwd" se abre para leer y escribir: la actualización del contenido del archivo está sincronizada, "rws" se abre para leer y escribir: contenido del archivo y meta están sincronizados Actualización de datos
  4. Si se utiliza RandomAcessFile como flujo de salida, si el archivo escrito no existe, se creará automáticamente durante el proceso de ejecución. Si el archivo escrito existe, el contenido del archivo original se sobrescribirá. (Por defecto, sobrescribe desde cero).

Supongo que te gusta

Origin blog.csdn.net/m0_46656833/article/details/111824362
Recomendado
Clasificación