En java, usamos la clase java.io.File para implementar operaciones en los atributos básicos de los archivos, incluida la lectura de atributos de archivos, la creación de archivos, la eliminación de archivos, la adición de archivos, etc. El archivo es una clase, por lo que debe crear un objeto cuando lo use, pero la instancia de la clase Archivo es inmutable, es decir, una vez creada, el nombre de la ruta abstracta representada por el objeto Archivo nunca cambiará, es decir , utilizando el método constructor, especifique el nombre de la ruta, el nombre del archivo, etc. para construir el objeto de la clase File y luego llame al método createNewFile() del objeto para crear el archivo correspondiente.
El objeto de la clase File puede representar una ruta de archivo específica. En aplicaciones prácticas, se puede usar una ruta absoluta o una ruta relativa. La siguiente es una instancia de creación de un objeto de archivo.
Método de construcción | ilustrar |
---|---|
nuevo archivo ("d:\test\test.txt") | Cree un archivo en el directorio especificado, si la ruta no existe, cree un objeto de archivo virtual |
nuevo archivo ("prueba.txt") | Cree un archivo test.txt en el directorio raíz del proyecto actual |
nuevo archivo ("d: \ prueba") | prueba puede ser un directorio o un archivo |
nuevo archivo ("d: \ prueba \", "prueba.dat") | Crear el archivo especificado en el directorio especificado |
método | ilustrar |
---|---|
Archivo.borrar() | eliminar archivo o vaciar directorio carpeta directorio |
Archivo.crearNuevoArchivo() | Crear un nuevo archivo vacío |
Archivo.mkdir() | Crear una nueva carpeta vacía |
Archivo.mkdirs() | Cree directorios de varios niveles en lotes |
Archivo.lista() | Obtener los nombres de archivos y carpetas en el directorio especificado |
Archivo.listFiles() | Obtenga los objetos de archivo y carpeta en el directorio especificado |
El archivo existe() | Si el archivo o la carpeta existe |
Cadena getParent() | Devuelve la cadena de nombre de ruta del directorio principal, o nulo si no se especifica ningún directorio principal |
Archivo getParentFile() | Devuelve el objeto de archivo del directorio principal |
Cadena getNombre() | Devuelve el nombre de un archivo o carpeta |
Cadena getAbsolutePath() | obtener ruta absoluta |
Cadena getPath() | Devuelve la cadena del nombre de la ruta |
long lastModified() | Devuelve la hora en que se modificó el archivo por última vez. |
distancia larga() | Obtener la longitud, el número de bytes |
booleano canRead() | Juzgar si es legible |
booleano canWrite() | Determinar si se puede escribir |
booleano está oculto () | Determinar si ocultar |
largo obtenerEspacioLibre() | Devuelve el número de bytes no asignados en la partición |
largo getTotalSpace() | Devuelve el tamaño de partición de este archivo. |
largo getUsableSpace() | Devuelve el número de bytes ocupados |
código hash int() | código hash de archivo |
método | ilustrar |
---|---|
Archivo estático[] listRoots() | enumerar las raíces del sistema de archivos disponibles |
booleano renameTo(Destino del archivo) | Cambiar el nombre, cortar y pegar archivos, mover archivos |
setExecutable booleano(ejecutable booleano) | Establecer permisos de ejecución |
setExecutable booleano (ejecutable booleano, solo propietario booleano) | Establecer permisos de ejecución para todos los demás usuarios |
booleano setLastModified(mucho tiempo) | establecer la hora de la última modificación |
booleano setReadable(booleano legible) | Establecer permisos de lectura |
setReadable booleano (legible booleano, solo propietario booleano) | Establecer permisos de lectura para todos los demás usuarios |
booleano setWritable(booleano escribible) | Establecer permisos de escritura |
booleano setWritable(booleano escribible, booleano solo propietario) | Establecer permisos de escritura para todos los usuarios |
La clase padre inmediata de la clase File es la clase Object. Un objeto de la clase File, que representa un archivo o directorio en el disco. Si olvida escribir la ruta de la letra de la unidad cuando crea un archivo o carpeta, estará en la ruta raíz del proyecto de forma predeterminada.
recuperar todos los archivos en un directorio
public static void count(File f) {
File[] files = f.listFiles();
for (File f1 : files) {
if (f1.isDirectory()) {
count(f1);
}
System.out.printf("文件:%s[%s]%n", f1.getAbsolutePath(), f1.isFile() ? "文件" : "目录");
}
}
eliminar archivos en un directorio
public static void deltree(File dir) {
if (dir.isDirectory()) {
File[] files = dir.listFiles();
for (File f : files) {
if (f.isDirectory()) {
deltree(f);
}
f.delete();
}
}
dir.delete();
}
Cuente el número de ocurrencias de cada tipo de archivo en la carpeta.
static Map<String, Integer> map = new HashMap<>();
public static void main(String[] args) {
count1(new File("H:\\weixinProjects"));
System.out.println(map);
}
public static void count1(File f) {
File[] files = f.listFiles();
for (File f1 : files) {
if (f1.isDirectory()) {
count1(f1);
}
if (f1.isFile()) {
String fn = f1.getName().toLowerCase();
String exit = "unknow";
try {
exit = fn.substring(fn.lastIndexOf("."));
} catch (Exception e) {
}
if (map.containsKey(exit)) {
map.put(exit, map.get(exit) + 1);
} else {
map.put(exit, 1);
}
}
}
}
organizar archivos
static Set<String> types = new HashSet<>(List.of("jpg", "png", "webp", "gif", "svg"));
static long num = 0;
public static void count2(File dir, File dst) {
if (!dst.exists()) {
dst.mkdirs();
}
if (dir.isDirectory()) {
File[] files = dir.listFiles();
for (File f : files) {
if (f.isDirectory()) {
count2(f, dst);
}
String fn = f.getName().toLowerCase();
String ext = fn.substring(fn.lastIndexOf(".") + 1);
if (types.contains(ext)) {
copyFile(f, new File(dir, String.format("wx-%03d.%s", ++num, ext)));
}
}
} else {
String fn = dir.getName().toLowerCase();
String ext = fn.substring(fn.lastIndexOf(".") + 1);
copyFile(dir, new File(dir, String.format("wx-%03d.%s", ++num, ext)));
}
}
public static void copyFile(String src, String dst) {
copyFile(new File(src), new File(dst), 8192);
}
public static void copyFile(File src, File dst) {
copyFile(src, dst, 8192);
}
public static void copyFile(File src, File dst, int b) {
try (FileInputStream fis = new FileInputStream(src); FileOutputStream fos = new FileOutputStream(dst)) {
byte[] buf = new byte[b];
int len = 0;
while ((len = fis.read(buf)) >= 0) {
fos.write(buf, 0, len);
}
} catch (Exception e) {
}
}
Escribir un programa para contar líneas de código.
static long AllRows = 0;
static int AllFiles = 0;
public static void main(String[] args) {
count(new File("G:\\javaEE\\Javase\\proa01"));
}
public static void count(File src) {
File[] files = src.listFiles();
for (File f : files) {
if (f.isDirectory()) {
count(f);
}
if (f.getName().endsWith("java")) {
long rows = getRows(f);
AllRows += rows;
AllFiles++;
System.out.println(f.getAbsolutePath() + "[有" + rows + "行]");
System.out.println("总共有" + AllRows);
System.out.println("Java文件有" + AllFiles);
}
}
}
public static long getRows(String src) {
return getRows(new File(src));
}
public static long getRows(File src) {
long rows = 0;
try (var read = new FileInputStream(src)) {
rows = new String(read.readAllBytes()).lines().count();
} catch (Exception e) {
}
return rows;
}