用 java 中的 Apache Tar 保存结构的目录

2024-03-27

我怎么能够tar一个目录并使用以下命令保留目录结构org.apache.commons.compress图书馆?

通过我在下面所做的事情,我只是得到一个所有东西都被压平的包裹。

Thanks!


这是我一直在尝试的方法,但它不起作用。

public static void createTar(final String tarName, final List<File> pathEntries) throws IOException {
    OutputStream tarOutput = new FileOutputStream(new File(tarName));

    ArchiveOutputStream tarArchive = new TarArchiveOutputStream(tarOutput);

    List<File> files = new ArrayList<File>();

    for (File file : pathEntries) {
        files.addAll(recurseDirectory(file));
    }

    for (File file : files) {

        TarArchiveEntry tarArchiveEntry = new TarArchiveEntry(file, file.getName());
        tarArchiveEntry.setSize(file.length());
        tarArchive.putArchiveEntry(tarArchiveEntry);
        FileInputStream fileInputStream = new FileInputStream(file);
        IOUtils.copy(fileInputStream, tarArchive);
        fileInputStream.close();
        tarArchive.closeArchiveEntry();
    }

    tarArchive.finish();
    tarOutput.close();
}

public static List<File> recurseDirectory(final File directory) {

    List<File> files = new ArrayList<File>();

    if (directory != null && directory.isDirectory()) {

        for (File file : directory.listFiles()) {

            if (file.isDirectory()) {
                files.addAll(recurseDirectory(file));
            } else {
                files.add(file);
            }
        }
    }

    return files;
}

你的问题在这里:

TarArchiveEntry tarArchiveEntry = new TarArchiveEntry(file, file.getName());

因为您将每个文件仅包含其名称,而不是其路径放在 tar.gz 文件中。

您需要将路径条目中的相对路径传递到此文件,而不是file.getName().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 java 中的 Apache Tar 保存结构的目录 的相关文章

  • 在 Java 中实现排列算法的技巧

    作为学校项目的一部分 我需要编写一个函数 该函数将接受整数 N 并返回数组 0 1 N 1 的每个排列的二维数组 该声明看起来像 public static int permutations int N 该算法描述于http www usn
  • 在tomcat中显示Spring-security的SQL错误

    我使用 spring security 框架创建了一个 Web 应用程序 我设置了一个数据库来存储用户及其角色 但 tomcat 给出以下错误 17 sep 2010 11 56 14 org springframework beans f
  • 杰克逊.将缺失的属性反序列化为空Optional

    假设我有一堂这样的课 public static class Test private Optional
  • 可以显式删除 lambda 的序列化支持

    As 已经知道 https stackoverflow com a 22808112 2711488很容易添加序列化当目标接口尚未继承时支持 lambda 表达式Serializable 就像 TargetInterface Seriali
  • 关于java中同步的问题;何时/如何/到什么程度

    我正在开发我的第一个多线程程序 并在同步的几个方面陷入困境 我已经浏览了 oracle sun 主页上的多线程教程 以及这里的一些关于 SO 的问题 所以我相信我知道什么是同步 然而 正如我提到的 有几个方面我不太确定如何弄清楚 我以明确问
  • 正则表达式或用单个空格替换多个空格的方法

    你能告诉我有没有办法在java或spring中用单个空格替换多个空格 有相同的 stringUtils 函数吗 like 1 test test test test 2 test test test test 3 test test tes
  • 设置 MetaspaceSize 的指南 - java 8

    64 位服务器的 MetaspaceSize 默认值是多少 我在官方文档中没有找到它 我观察到 在服务器 JVM 进程中 GC 频率有时会变高并持续增长 如果我重新启动服务几次 它就会恢复稳定 我认为这是由于 JRE 升级造成的 JVM 堆
  • Java SWT 用户输入验证

    在 SWT 中进行用户输入验证时 Java 约定是什么 我读到有 FieldEditors 它们是非常方便的字段 但遗憾的是仅适用于首选项和对话框 我还了解到有一个 IValidator 接口 但它经常与数据绑定一起使用 就我而言 我的大多
  • Android 3.1 USB 主机 - BroadcastReceiver 未收到 USB_DEVICE_ATTACHED

    我经历过USB 主机的描述和示例位于developer android com http developer android com guide topics usb host html检测连接和分离的 USB 设备 如果我在清单文件中使用
  • 何时使用 clone() 以及 addAll() 和 add() 的实际工作原理

    我正在使用 Java 和 MySQL 我的项目中有大约 60 个交易屏幕 我曾经用过add and addAll 复制的功能ArrayList 例如 List
  • 将 Spring ModelAttribute 应用于所有使用特定参数类型的控制器

    在 Spring Boot REST 应用程序中 我有一个TableRequest包含表格数据 GET 请求的列排序 筛选和分页详细信息的类型 它是通用的 因为它不关心所请求的具体数据是什么 它只指定通用表参数 因此它适用于许多不同的控制器
  • 使用 dockerfile 在 docker 中安装 mongodb 驱动

    我有一个 mongodb docker 容器 我需要另一个安装了 php 和 apache 的 docker 容器 我想从这个容器运行一个 php 脚本并将一些数据发送到 mongodb 容器以将数据保存在 mongodb 数据库中 所以我
  • 改造添加带有令牌和 ID 的标头

    我在获取经过身份验证的用户时遇到问题 在此之前我得到了令牌和用户 ID 现在我需要使用访问令牌和 ID 从服务器获取用户 我有标题格式 https i stack imgur com OQ87Y png 现在我尝试使用拦截器添加带有用户令牌
  • 如何自定义 JFrame 上的标题栏?

    我想在我的 Java Swing 桌面应用程序中拥有一个自定义的标题栏 最好的方法是什么 我可以通过在 JFrame 的构造函数中使用以下代码来使用 Swing 标题栏 this setUndecorated true this getRo
  • 使用 https 的 Java Jersey RESTful Web 服务

    我是 Java EE 的新手 正在开发一个 RESTful API 其中每个 API 调用用户都会发送编码的凭据 我的问题是如何通过默认的 http 实现 https 协议并确保我的连接安全 我正在使用 Jersey Restful Web
  • 如何在打开导航抽屉时使背景 Activity 变小?

    我想做我的背景Activity打开时稍微小一点Navigation Drawer 模拟存在的效果Airbnb应用 我想最好的解释是截图 但重点不是让 View 变小 而是让它成为与 Drawer 打开 关闭动画同步的动画 因此 如果您开始打
  • 如何在 Google 地图中创建自定义地图?

    我正在尝试创建一个包含我家地图的 Google 地图应用程序 卧室 浴室 厨房等 使用 GPS 我会找到我现在在家里的位置 并尝试获取到我卧室的方向 步行距离 您可以使用Google的API来获取方向 我需要知道的是 如何添加我家的自定义地
  • Spring Oauth2. DaoAuthenticationProvider 中未设置密码编码器

    我对 Spring Oauth 和 Spring Security 很陌生 我正在尝试在我的项目中使用 client credentials 流程 现在 我设法使用自己的 CustomDetailsS ervice 来从系统中已存在的数据库
  • 如何在非Spring的构造型类中使用@Autowired

    我想在此类中使用该存储库 但是当我放置像 Component 这样的构造型时 我从 IDE 收到错误 无法自动装配 未找到 身份验证 类型的 bean public class CustomMethodSecurityExpressionR
  • 注释处理工具<-检查有效注释

    I have ColumnMetadata index 1 ColumnMetadata index 2 ColumnMetadata index 3 我必须使用 APT 检查索引号是否唯一 我不知道该怎么做 我看不懂教程 一般我在网上找资

随机推荐

  • Cloud Dataflow 中的作业失败:启用 Dataflow API

    我目前正在尝试将 Dataflow 与 Pub Sub 结合使用 但收到此错误 工作流程失败 原因 6e74e8516c0638ca 刷新您的凭据时出现问题 请检查 1 为您的项目启用Dataflow API 2 您的项目有一个机器人服务帐
  • 在 Visual Studio 2010 项目中包含外部库

    我是视觉工作室的新手 似乎无法在任何地方找到这个问题的答案 我正在使用 VS2010 进行 VC 项目 我有另一个项目构建到 lib 文件中并设置为参考 但无法弄清楚如何实际包含标头 事实证明谷歌毫无用处 请帮忙 通常 这是通过将包含文件所
  • qt/c++ 动态命名变量

    我正在为我的一项大学作业在 Qt 中开发一个 html 编辑器 并且我在某些变量的命名方面遇到了问题 问题是这样的 当用户决定加载他们的 项目 时 程序会迭代该文件夹并查找其中有多少个 html 文件 然后它会创建要显示的选项卡 我有一个自
  • Symfony2 Assetic 路由和资源错误

    我有一个模板 例如index html php 我在其中使用 php assetic 加载器 如下所示 如果我对模板文件进行任何更改 我会得到路线 assetic 2b431f4 不存在 如果我改变 assetic use controll
  • C 中逐个字符读取文件

    我正在用 C 语言编写 BF 解释器 但在读取文件时遇到了问题 我以前用过scanf为了读取第一个字符串 但是你的 BF 代码中不能有空格或注释 现在这就是我所拥有的 char readFile char fileName FILE fil
  • EditText 随选择缩放

    我有一个EditText我想缩放它并滚动setScaleX setScaleY它工作正常 文本正在正确的位置进行编辑 但是当我尝试选择文本时 它会将选择手柄绘制到位置 就像文本未缩放时一样 我们都知道bug https code googl
  • 对公司名称的 DataFrame 进行非规范化 [第 1 部分]

    我有一个公司名称的 Pandas DataFrame 其结构如下 import numpy as np import pandas as pd df pd DataFrame name Nitron Pulset Rotaxi postal
  • 我如何知道创建项目时使用的是哪个版本的 Delphi

    如果我有 Delphi 项目的完整源代码 我如何知道使用哪个版本 即 Delphi 5 Delphi 7 Delphi 2010 等 来创建它 而无需在 Delphi 中打开它 我有许多可以追溯到 Delphi 6 时代的项目 我想对它们进
  • OpenId Connect 与 wso2 仅返回子声明

    当我询问用户 WSO2 的信息时 响应仅包含他的子信息 Request GET https srv wso2 domain com 9443 oauth2 userinfo schema openid Request headers Acc
  • AngularJS - 涉及异步数据的依赖注入

    我想让当前登录的用户 ID 和用户名可供我的 Angular 指令使用 我创建了一个 API 端点来检索此信息 以及一些其他信息 问题是 API 调用是异步的 var url baseUrl api sessions http get ur
  • 没有指定 dataType 的自定义 ajaxTransport 函数不会触发(根本!)

    我一直在尝试设置jQuery 的自定义 ajaxTransports http api jquery com extending ajax Transports在我们的产品的某些场景下缩短某些工作流程 然而 我在让这些运输受到尊重方面取得了
  • 将 CSV 文件转换为 Java - 向后复制

    我之前问过一个关于在java中将CSV文件转换为二维数组的问题 我完全重写了我的代码 几乎要重新编写了 我现在遇到的唯一问题是它正在向后打印 换句话说 列打印在行应该打印的位置 反之亦然 这是我的代码 int board new int 2
  • D 中是否有相当于 C++ 的 Future/Promise ?

    D 世界中是否存在 C 世界中的未来 承诺等价物 当然有标准并行度 http dlang org phobos std parallelism html但它并不完全具有承诺 未来组合的功能 没有相当于获取未来或设置结果或异常的功能 您也不能
  • Pytorch:了解 nn.Module 类内部如何工作

    一般来说 一个nn Module可以由子类继承 如下所示 def init weights m if type m nn Linear torch nn init xavier uniform m weight class LinearRe
  • 如何使用 jQuery 从 iframe 调用父页面上的函数?

    我有一个上传表单 可以发布到隐藏的 iframe 我试图从 iframe 调用父页面上的函数 但收到错误 top stopUpload 不是函数 这样做的正确方法是什么 父页面 document ready function documen
  • 检测两个图像之间的像素碰撞/重叠

    我有两个 UIImageView 其中包含具有某些透明区域的图像 有什么方法可以检查两个图像之间的非透明区域是否发生碰撞 Thanks 更新 这就是我到目前为止所拥有的 不幸的是它仍然不起作用 但我不明白为什么 if CGRectInter
  • 在什么情况下会调用类型到自身的转换运算符?

    考虑一个类型bar其中具有用户定义的类型引用转换运算符bar struct bar operator bar operator const bar const 何时应用这些转换 此外 如果这些运算符是deleted 这两个功能有什么有趣的用
  • 释放宝石时 rake 释放挂起

    我正在尝试将我的第一个宝石发布到 Ruby Gems 该宝石在本地运行良好 我使用以下方式释放它 rake release 这在控制台中给了我这个 example gem 0 0 3 built to pkg example gem 0 0
  • 命名空间、argparse 和用法

    这确实是几个问题 argparse 使用名称空间而不是字典有原因吗 假设我有一个班级 init self init method args The init method参数告诉 init function 我想用哪种方式初始化类 而arg
  • 用 java 中的 Apache Tar 保存结构的目录

    我怎么能够tar一个目录并使用以下命令保留目录结构org apache commons compress图书馆 通过我在下面所做的事情 我只是得到一个所有东西都被压平的包裹 Thanks 这是我一直在尝试的方法 但它不起作用 public