• java中循环遍历某个文件夹下面的文件,不压缩自身的文件夹,然后压缩成tar.gz格式,压缩失败报异常,代码类编写?


    以下是一个使用Java遍历文件夹并将文件压缩成tar.gz格式的示例代码。如果压缩过程中出现异常,会捕获并报告错误:

    java
    Copy code
    import java.io.*;
    import java.util.zip.*;
    import org.apache.commons.compress.archivers.tar.*;

    public class FileCompression {
        public static void main(String[] args) {
            String folderPath = "/path/to/folder"; // 文件夹路径
            String outputFilePath = "/path/to/output.tar.gz"; // 输出文件路径

            try {
                File folder = new File(folderPath);
                FileOutputStream fos = new FileOutputStream(outputFilePath);
                BufferedOutputStream bos = new BufferedOutputStream(fos);
                GZIPOutputStream gzos = new GZIPOutputStream(bos);
                TarArchiveOutputStream tos = new TarArchiveOutputStream(gzos);

                compressFolder(folder, tos, "");

                tos.finish();
                tos.close();

                System.out.println("文件压缩完成。");
            } catch (IOException e) {
                e.printStackTrace();
                System.err.println("文件压缩失败:" + e.getMessage());
            }
        }

        private static void compressFolder(File folder, TarArchiveOutputStream tos, String parentDir) throws IOException {
            File[] files = folder.listFiles();
            byte[] buffer = new byte[1024];

            for (File file : files) {
                if (file.isDirectory()) {
                    continue; // 跳过自身的文件夹
                }

                FileInputStream fis = new FileInputStream(file);
                BufferedInputStream bis = new BufferedInputStream(fis);

                String entryName = parentDir + file.getName();
                TarArchiveEntry entry = new TarArchiveEntry(file, entryName);
                tos.putArchiveEntry(entry);

                int bytesRead;
                while ((bytesRead = bis.read(buffer)) != -1) {
                    tos.write(buffer, 0, bytesRead);
                }

                bis.close();
                tos.closeArchiveEntry();
            }
        }
    }
    请确保将/path/to/folder替换为你想要遍历的文件夹路径,将/path/to/output.tar.gz替换为输出tar.gz文件的路径。此代码使用java.util.zip和org.apache.commons.compress.archivers.tar库来实现文件的压缩。如果发生异常,将打印堆栈跟踪并报告错误消息。在compressFolder方法中,我们添加了一个条件来跳过自身的文件夹,只处理文件。

  • 相关阅读:
    闲置手机电脑流量变现项目
    有点东西,template可以直接使用setup语法糖中的变量原来是因为这个
    2023-简单点-IOU计算
    【考研数学】六. 三重积分
    Transformer pytorch实现逐行详解
    为什么要做数据可视化
    Java判断输入ip是否合法的工具类,拿上就可以使用
    20230911 CLion 中 commit 窗口悬浮之后,再dock到主窗口
    公司网页制作需要多少钱
    数据结构初阶--单链表(讲解+类模板实现)
  • 原文地址:https://blog.csdn.net/gb4215287/article/details/133989496