Comprender las operaciones de archivos y IO

Entendiendo archivos

Los archivos a los que generalmente nos referimos son archivos almacenados en el disco duro . Nuestro contenido de datos importante habitual se almacena en forma de archivos. El código Java que generalmente escribimos es en realidad una forma de operar la memoria. Al solicitar memoria, espacio para realizar operaciones. .
A continuación aprenderemos a operar el disco duro a través de la operación de archivos e interfaces IO, puede operar más directamente los archivos de datos que usamos habitualmente, esto es indispensable ya sea en nuestro trabajo o en nuestros estudios .

carpeta

Comúnmente nos referimos a los archivos de directorio como carpetas. Los archivos son como datos. Nuestras computadoras también administran archivos administrando datos. Como puede
Insertar descripción de la imagen aquí
ver, las computadoras administran directorios de archivos a través de una estructura de árbol .

ruta de archivo

La ruta de la que hablamos está compuesta por los directorios a través de los cuales se encuentra el archivo, según la estructura de árbol sabemos que la búsqueda de un archivo comienza desde la raíz y recorre todas las ramas del árbol, se inicia el sistema Windows. desde esta computadora. , por lo que generalmente omitimos esta computadora

  • Ruta absoluta: se refiere a una ruta específica , que comienza con una letra de unidad. Por ejemplo: C:\Archivos de programa\Java\texto
  • Ruta relativa: se refiere a buscar archivos (que comienzan con .) de un directorio determinado . Por ejemplo: .\texto
    注:Windows上文件与路径一一对应

Clasificación de archivos

Los archivos generalmente se dividen 文本文件en二进制文件

  • Archivo de texto: los caracteres se almacenan
  • Archivo binario: almacena datos binarios,
    podemos abrirlo a través del Bloc de notas 1. Si aparecen caracteres confusos, es un archivo binario.

Operaciones de archivos

Se refiere principalmente a algunas funciones que se pueden completar a través del administrador de recursos de archivos. Se proporciona en Java File类. A través de esta clase se completan una serie de operaciones. Vayamos al grano.

clase de archivo

La clase de archivo existe java.ioen el paquete.

Método de construcción

File(String pathname)            //根据文件路径创建一个新的File 实例

注:此处的文件可以不存在,只要目录可以找到,调用createNewFile()就可以创建该文件

Métodos comunes

Modificadores y tipos de valores de retorno firma del método ilustrar
Cadena obtenerpadre() Volver al archivo
Cadena obtenerNombre() Devuelve el nombre de archivo simple del objeto FIle
Cadena obtenerRuta() Devuelve la ruta del archivo del objeto Archivo.
Cadena obtenerRutaAbsoluta() Devuelve la ruta absoluta del objeto Archivo.
Cadena obtenerCanonicalPath() Devuelve la ruta absoluta modificada del objeto Archivo
booleano existe() Determinar si el archivo descrito por el objeto Archivo realmente existe
booleano esDirectorio() Determinar si el archivo representado por el objeto Archivo es un directorio
booleano esArchivo() Determinar si el archivo representado por el objeto Archivo es un archivo normal
booleano crearNuevoArchivo() Según el objeto Archivo, se crea automáticamente un archivo vacío. Devuelve verdadero después de una creación exitosa
booleano borrar() Según el objeto Archivo, elimine el archivo. Devuelve verdadero después de una eliminación exitosa
vacío eliminarAlSalir() Según el objeto Archivo, el archivo anotado se eliminará y la eliminación no se realizará hasta el final de la ejecución de JVM.
Cadena[] lista() Devuelve todos los nombres de archivos en el directorio representado por el objeto Archivo
Archivo[] lista de archivos() Devuelve todos los archivos en el directorio representado por el objeto Archivo, representado por un objeto Archivo
booleano mkdir() Cree el directorio representado por el objeto Archivo.
booleano mkdir() Crea el directorio representado por el objeto Archivo y, si es necesario, crea directorios intermedios.
booleano cambiar nombre a (archivado) Cambiar el nombre de los archivos también puede considerarse como nuestras operaciones habituales de cortar y pegar.
booleano puedo leer() Determinar si el usuario tiene permisos de lectura sobre el archivo
booleano puede escribir() Determinar si el usuario tiene permisos de escritura en el archivo

Las operaciones anteriores son relativamente simples, solo tenga en cuenta que el directorio de trabajo en IDEA es el directorio donde se encuentra el proyecto actual .\ representa el directorio de trabajo actual (directorio base)..\ representa el directorio principal del directorio de trabajo actual.

E/S de flujo de bytes

Cada objeto de flujo se divide en dos tipos, entrada y salida. La entrada se refiere al envío de datos del disco duro a la CPU y la salida se refiere al envío de datos desde la CPU al disco duro. En otras palabras, la entrada y salida que analizamos se basan en en la CPU.

Flujo de entrada

Con respecto a la clase InputStream, el método implementado en Java es una clase abstracta, por lo que no podemos crear una instancia directamente, sino que generalmente usamos una clase que implementa esta clase abstracta. En esta etapa, no involucramos la red ni otros contenidos, pero Solo te importa el archivo. Lee, así que usa FileInputStream.

Métodos comunes

Modificadores y tipos de valores de retorno firma del método ilustrar
En t leer() Lea un byte de datos y devuelva -1 para indicar que se ha leído por completo.
En t leer(byte[] b) Lea hasta b.length bytes de datos en b y devuelva el número real leído; -1 representa la finalización de la lectura
En t leer(byte[] b,int off, int len) Leer hasta len - bytes de datos en b, comenzar desde off y devolver el número real leído; -1 representa la finalización de la lectura
vacío cerca() Cerrar flujo de bytes

Nota : La operación de cierre es muy necesaria, a diferencia del hábito anterior de Java, ¡el archivo está aquí 资源需要手动释放! ! !

flujo de entrada de archivos

Método de construcción

firmar ilustrar
FileInputStream (archivo de archivo) Utilice Archivo para construir un flujo de entrada de archivo
FileInputStream (nombre de cadena) Construya una secuencia de entrada de archivos utilizando una ruta de archivo

Instancia de FileInputStream

InputStream inputStream = new FileInputStream("D:/J-student-s:/JE-student-23-7-9");

Un excelente hábito de escritura (pruebe con recursos):

try(InputStream inputStream = new FileInputStream("D:/J-student-s:/JE-student-23-7-9")){
    
    
//这种写法可以自动释放资源
        }

Hay tres versiones de lectura proporcionadas en el InputStream anterior. El valor de retorno -1 representa el final de la lectura. Escribimos la siguiente operación de lectura de archivos:

import java.io.*;

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

        try(InputStream inputStream = new FileInputStream("D:\\student-Java-s\\JE-student-23-7-9\\text.txt");){
    
    
            while(true){
    
    
                int b = inputStream.read();
                if (b==-1){
    
    
                    break;
                }
                System.out.print(b);
                System.out.printf("%c\n",b);
            }
        }
    }
}

Los resultados de ejecución son los siguientes:
Insertar descripción de la imagen aquí

Flujo de salida

método

Modificadores y tipos de valores de retorno firma del método ilustrar
vacío escribir (int b) Escriba los datos que se le darán en bytes.
vacío escribir(byte[] b) Escriba todos los datos en la matriz de caracteres b en el sistema operativo
En t escribir(byte[] b, int off, int len) Escriba los datos comenzando desde off en la matriz de caracteres b en os, escriba un total de len
vacío cerca() Cerrar flujo de bytes
vacío enjuagar() Sabemos que la velocidad de E / S es muy lenta, por lo que para reducir la cantidad de operaciones del dispositivo, la mayoría de OutputStreams escribirán datos temporalmente en un área designada de la memoria hasta que el área esté llena u otros datos. En realidad, se escribe en el dispositivo solo cuando se especifican las condiciones. Esta área generalmente se denomina búfer. Pero un resultado es que es probable que parte de los datos que escribimos queden en el búfer. La operación de descarga debe llamarse al final o en una ubicación adecuada para descargar los datos al dispositivo.

Nota: De manera similar, usamos FileOutputStreampara escribir archivos.

Flujo de salida de archivos

No hay mucho que decir aquí, el método de construcción y el uso específicos son los mismos que FileInputStream

E/S de flujo de caracteres

Utilice principalmente las clases abstractas lector y escritor , y las clases de instancia FileReader y FileWriter. Utilice lectura y escritor para escribir y leer, que es exactamente lo mismo que el flujo de bytes. La única diferencia es que el flujo de caracteres IO lee un carácter a la vez. tiempo, y el flujo de bytes lee una palabra a la vez. Festival, no me extenderé demasiado aquí ~

Supongo que te gusta

Origin blog.csdn.net/m0_65038072/article/details/131615384
Recomendado
Clasificación