Notas de estudio de Java 15 Operación IO

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;
    }

Supongo que te gusta

Origin blog.csdn.net/xxxmou/article/details/129207837
Recomendado
Clasificación