commons-io工具类常用方法

commons-io是Apache Commons项目的一个模块,提供了一系列处理I/O(输入/输出)操作的工具类和方法。它旨在简化Java I/O编程,并提供更多的功能和便利性。

读取文件内容为字符串

        String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
        // 读取整个文件字符为一个字符串
        System.out.println(FileUtils.readFileToString(new File(path), StandardCharsets.UTF_8));
        // llls
        // www
        // pwd
        // 你们

读取文件内容为List

      String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
        // 读取整个文件字符为一个字符串
        List list = FileUtils.readLines(new File(path), StandardCharsets.UTF_8);
        for (String s : list) {
            System.out.println(s);
            // llls
            // www
            // pwd
            // 你们
        }

获取文件属性

       String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
        // 获取文件名test
        System.out.println(FilenameUtils.getBaseName(path)); // test
        // 获取文件后缀
        System.out.println(FilenameUtils.getExtension(path)); // txt

文件操作

复制文件

String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
        String targetPath="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test_copy.txt";
        File file = new File(path);
        File targetFile = new File(targetPath);
        FileUtils.copyFile(file, targetFile);

移动文件

String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
        String targetPath="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test_copy.txt";
        File file = new File(path);
        File targetFile = new File(targetPath);
        FileUtils.moveFile(file, targetFile);

安静地删除文件

   String path="C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt";
        File file = new File(path);
        FileUtils.deleteQuietly(file);

获取指定目录下特定扩展名的所有文件 

 String path = "C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources";
        String[] extensions = new String[]{"jpg", "png", "avi"};
        File file = new File(path);
        // 第一个参数是要列出文件的目录,第二个参数是扩展名数组用于筛选文件,第三个参数是一个布尔值,用于指定是否包括子目录中的文件。
        List fileList = (List) FileUtils.listFiles(file, extensions, true);

        for (File f : fileList) {
            System.out.println("找到文件:" + f.getAbsolutePath());
        }

流操作

复制流

InputStream inputStream = null;
        OutputStream outputStream = null;

        try {
            inputStream = new FileInputStream("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt");
            outputStream = new FileOutputStream("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\target.txt");

            IOUtils.copy(inputStream, outputStream);

            System.out.println("文件复制成功");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭输入流和输出流
            IOUtils.closeQuietly(inputStream);
            IOUtils.closeQuietly(outputStream);
        }

输入流转换为字节数组

  InputStream inputStream = null;
        try {
            inputStream = new FileInputStream("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt");
            byte[] bytes = IOUtils.toByteArray(inputStream);
            // 转换为字符串
            String content = new String(bytes, "UTF-8");
            System.out.println(content);

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            IOUtils.closeQuietly(inputStream);
        }

文件过滤器

并逻辑过滤器

 // 创建两个文件过滤器
        FileFilter filter1 = FileFilterUtils.suffixFileFilter(".txt");
        FileFilter filter2 = FileFilterUtils.sizeFileFilter(1024);

        // 创建同时满足两个条件的过滤器
        FileFilter combinedFilter = FileFilterUtils.and((IOFileFilter) filter1, (IOFileFilter) filter2);

        // 获取指定目录下满足过滤条件的文件
        File dir = new File("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources");
        File[] files = dir.listFiles(combinedFilter);
        
        // 遍历符合条件的文件
        for (File file : files) {
            System.out.println(file.getName());
        }

或逻辑过滤器

// 创建两个文件过滤器
        FileFilter filter1 = FileFilterUtils.suffixFileFilter(".txt");
        FileFilter filter2 = FileFilterUtils.sizeFileFilter(1024);

        // 创建同时满足两个条件的过滤器
        FileFilter combinedFilter = FileFilterUtils.or((IOFileFilter) filter1, (IOFileFilter) filter2);

        // 获取指定目录下满足过滤条件的文件
        File dir = new File("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources");
        File[] files = dir.listFiles(combinedFilter);

        // 遍历符合条件的文件
        for (File file : files) {
            System.out.println(file.getName());
        }

文件后缀过滤器

 // 创建一个文件后缀过滤器
        String suffix = ".txt";
        FileFilter filter = FileFilterUtils.suffixFileFilter(suffix);
        File dir = new File("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources");
        File[] files = dir.listFiles(filter);

        // 遍历符合条件的文件
        for (File file : files) {
            System.out.println(file.getName());
        }

字节操作

输入流中读取数据到字节数组

        // 创建一个字节数组作为缓冲区
        byte[] buffer = new byte[1024];

        // 从输入流中读取数据并存储到缓冲区
        InputStream input = new FileInputStream("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test.txt");
        int bytesRead = IOUtils.read(input, buffer);

        // 关闭输入流
        IOUtils.closeQuietly(input);

        // 处理读取到的数据
        System.out.println("实际读取的字节数: " + bytesRead);
        System.out.println("读取的数据: " + new String(buffer, 0, bytesRead));

将字节数组写入输出流

         // 创建一个字节数组作为数据
        byte[] data = "Hello, world!".getBytes();

        // 创建一个输出流,并将字节数组写入到该流中
        OutputStream output = new FileOutputStream("C:\\Users\\zhang\\Desktop\\myyii\\demo\\src\\main\\resources\\test1.txt");
        IOUtils.write(data, output);

        // 关闭输出流
        IOUtils.closeQuietly(output);

目录操作

强制创建目录

        File directory = new File("path/to/directory");
        FileUtils.forceMkdir(directory);

你可能感兴趣的:(工作问题总结,java)