Operación de 45 archivos

Operaciones de archivo

  El lenguaje Java proporciona soporte para el sistema operativo de archivos, y este soporte se define en la clase java.io.File. También significa que en todo el paquete java.io, la clase File es la única que opera con el archivo en sí (Create , eliminar, renombrar, etc.) clases relacionadas. Si desea realizar operaciones de clase de archivo, debe proporcionar una ruta completa antes de poder llamar al método correspondiente para el procesamiento.

Operación básica de la clase de archivo

  Abra el documento JDK y verá que la clase File es una subclase de la interfaz Comparable, por lo que los objetos de la clase File se pueden ordenar. Al procesar la clase File, debe establecer la ruta de acceso para ella, por lo que la configuración de la ruta se maneja principalmente mediante el método de construcción de la clase File.

  • Método de construcción: public File(String pathname);establece la ruta completa del archivo que se va a operar
  • Método de construcción: public File(File parent,String child);establece la ruta principal y el subdirectorio;

  Utilice los siguientes métodos para realizar operaciones con archivos:

  • Crea un nuevo archivo:public boolean createNewFile() throws IOException;
  • Determine si el archivo existe:public boolean exists();
  • Borrar archivos:public boolean delete();

Crea un archivo usando la clase File

import java.io.File;

public class File_Basic {
    
    

	public static void main(String[] args) throws Exception {
    
    
		  File file = new File("C:\\Project\\Java_study\\src\\文件\\test.txt");
		  if(file.exists()) {
    
    
			  file.delete();
			  System.out.println("文件已删除!");
		  }else {
    
    
			  file.createNewFile();		//创建新文件
			  System.out.println("已创建新文件!");
		  }
	}
}

  La clase File implementa el procesamiento del archivo en sí.

Operación de clase de archivo en profundidad

  Ahora que se ha implementado la operación básica del archivo, pero también hay algunos problemas con esta operación, lo siguiente está optimizado para el código anterior.
  En el proceso de desarrollo y operación del proyecto de software real, el desarrollo del proyecto a menudo se lleva a cabo en Windows, y el proyecto se publica en base a Linux o Unix durante la implementación del proyecto para garantizar la seguridad del entorno de producción;
  existen diferencias entre los diferentes sistemas operativos. el separador de ruta es el separador de Windows "\" y el separador de Linux es "/". En este momento, se debe considerar el problema del separador de diferentes sistemas. Para resolver este problema, la clase File proporciona una constante: sigue la public static final String separator;
escritura de la ruta normal
File file = new File("C:"+File.separator+"Project"+File.separator+"Java_study"+File.separator+"src"+File.separator+"文件"+File.separator+"test.txt");
La adaptabilidad del sistema se refuerza continuamente, y la operación de la ruta actual se puede utilizar a voluntad.

  Cuando utilice la clase Archivo para el procesamiento de archivos, debe prestar atención: Programa -> JVM -> Función del sistema operativo -> Procesamiento de archivos, por lo que puede haber una demora cuando el mismo archivo se elimina o crea repetidamente, por lo que la mejor solución en esta vez siNo repitas el nombre

  Existe un requisito previo importante al crear un archivo: la ruta principal del archivo existe.

  • Obtenga la ruta principal:public File getParentFile();
  • Crea un directorio:public boolean mkdir/mkdirs();
import java.io.File;
import java.io.IOException;

public class File_Inner {
    
    

	public static void main(String[] args) throws IOException {
    
    
		File file = new File("C:"+File.separator+"Project"+File.separator+"Java_study"+File.separator+"src"+File.separator+"文件"+File.separator+"test.txt");
		if(!file.getParentFile().exists()) {
    
    		//父路径不存在
			file.getParentFile().mkdirs();		//创建父路径
		}
		if(file.exists()) {
    
    
			file.delete();		//删除文件
		}else {
    
    
			file.createNewFile();		//创建新文件
		}
	}
}

Es posible que este tipo de juicio y la creación del directorio principal solo deban realizarse una vez en muchos casos, pero si este juicio permanece en el código de manera consistente, aumentará la complejidad del tiempo, por lo que si desea mejorar el rendimiento en este momento, primero debe asegurarse de que el directorio ya está creado.

Obtener información de archivo

  Además de buscar archivos, también puede utilizar la clase File para obtener información proporcionada por el propio archivo. Puede obtener lo siguiente:

  • Leer / escribir / ejecutar:public boolean canRead()/canWrite()/canExecute();
  • Obtener la longitud del archivo: public long length();el método devuelve el tipo de datos largo, longitud de bytes.
  • Fecha y hora de la última modificación:public long lastModified();
  • Determine si es un directorio / archivo:publio boolean isDirectory()/isFile();
  • Enumere el contenido del directorio:public File[] listFiles();
import java.io.File;
import java.text.SimpleDateFormat;

public class File_get {
    
    
	public static void main(String[] args) {
    
    
		File file = new File("C:\\Project\\Java_study\\src\\文件\\test.txt");
		System.out.println(file.canRead());
		System.out.println(file.canWrite());
		System.out.println(file.canExecute());
		System.out.println(file.length());
		System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(file.lastModified()));
		System.out.println(file.isDirectory());
		System.out.println(file.isFile());
		File result [] = (new File("C:\\Project\\Java_study\\src").listFiles());
		for (int x = 0; x<result.length;x++) {
    
    
			System.out.println(result[x]);
		}
	}
}

  La información que se obtiene es el funcionamiento del archivo o del propio directorio, y no implica el procesamiento del contenido del archivo.

Caso completo: enumere todos los archivos en el directorio especificado

  Establezca una ruta de directorio arbitrariamente, enumere toda la información de archivo en el directorio, incluidos todos los archivos en subdirectorios, y en tal situación de procesamiento, se puede hacer de manera recursiva.

import java.io.File;

public class Example_ls {
    
    

	public static void main(String[] args) {
    
    
		File file = new File("C:\\Project\\Java_study\\src");		//是一个目录
		listDir(file);
	}
	public static void listDir(File file) {
    
    
		if(file.isDirectory()) {
    
    
			File result[] = file.listFiles();		//列出目录中全部内容
			if(result!=null) {
    
    
				for(int x=0;x<result.length;x++) {
    
    
					listDir(result[x]);			//继续依次判断
				}
			}
			System.out.println(file);
		}
	}
}

Caso completo: cambio de nombre de archivo en lotes

  Escriba el programa, ingrese el nombre del directorio cuando el programa se esté ejecutando y cambie el sufijo de todos los nombres de archivo en el directorio a .txt. Para este tipo de operación, se deben configurar algunas suposiciones. Los archivos que se pueden renombrar tienen un sufijo Si no hay sufijo, es el sufijo adicional, si hay sufijo, la ruta debe ser interceptada con el último sufijo.

import java.io.File;

public class Example_rename {
    
    

	public static void main(String[] args) {
    
    
		File file = new File("C:\\Project\\Java_study\\src\\文件");
		long start = System.currentTimeMillis();
		renameDir(file);
		long end = System.currentTimeMillis();
		System.out.println("Time:"+ (end-start));
	}
	public static void renameDir(File file) {
    
    
		if(file.isDirectory()) {
    
    		//is a Dir
			File result [] = file.listFiles();
			if(result != null) {
    
    
				for(int x =0;x<result.length;x++) {
    
    
					renameDir(result[x]);
				}
			}
		} else {
    
    
				if(file.isFile()) {
    
    		//is a File
					String fileName = null;
					if(file.getName().contains(".")) {
    
    
						fileName = file.getName().substring(0,file.getName().lastIndexOf("."))+".txt";
					} else {
    
    
						fileName = file.getName() + ".txt";
					}
					File newFile = new File(file.getParentFile(),fileName);		//新文件名称
					file.renameTo(newFile);
				}
			}
	}
}

  En el proceso de entrevista, a menudo aparece una ruta y luego le permite modificar el nombre o el archivo en lotes, solo use la estructura anterior.

Supongo que te gusta

Origin blog.csdn.net/MARVEL_3000/article/details/113029291
Recomendado
Clasificación