Directorio de artículos
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
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.io
en 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:
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 FileOutputStream
para 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í ~