Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用Java.util.ZIP创建ZIP时,将父文件夹动态添加到ZIP*_Java_Zipfile - Fatal编程技术网

在使用Java.util.ZIP创建ZIP时,将父文件夹动态添加到ZIP*

在使用Java.util.ZIP创建ZIP时,将父文件夹动态添加到ZIP*,java,zipfile,Java,Zipfile,我正在尝试压缩以下目录结构: C:/Test/1 C:/Test/2 C:/Test/3 C:/Test/3/1.txt C:/Test/3/2.txt C:/Test/4 我已经成功地完成了同样的任务。要求是我需要动态隔离文件夹,并在zip中创建父文件夹。比如: Test.zip A型/测试/1 A型/测试/2 B类/测试/3 TypeB/Test/3/1.txt TypeB/Test/3/2.txt B类/测试/4 有什么建议吗?如何确定“类型”组?基本上,您应该只创建一个空的ZipEnt

我正在尝试压缩以下目录结构:

C:/Test/1 C:/Test/2 C:/Test/3 C:/Test/3/1.txt C:/Test/3/2.txt C:/Test/4


我已经成功地完成了同样的任务。要求是我需要动态隔离文件夹,并在zip中创建父文件夹。比如:

Test.zip A型/测试/1 A型/测试/2 B类/测试/3 TypeB/Test/3/1.txt TypeB/Test/3/2.txt B类/测试/4


有什么建议吗?

如何确定“类型”组?基本上,您应该只创建一个空的
ZipEntry
,其名称是您所需的路径(即
TypeA/Test/1
),然后每个文件将命名为
TypeA/Test/1/{filename}
。空的“路径”条目只应添加一次。因为您在示例中提供的代码与我实现的代码非常相似。它所做的是迭代文件夹结构并保持文件夹的物理结构完整。当我根据返回的标志动态填充文件路径时,该类型从数据库返回。过去,我维护了一个简单的
列表
,其中包含我创建的所有“空”路径的
列表
。因此,在您的情况下,我猜,生成文件路径(即
Test/1
),然后您将根据文件路径(即
TypeA
)从数据库请求类型。然后(显然)创建最终路径(
TypeA/Test/1
)。您将检查每个目录的
列表
,并为其创建一个“空的”
ZipEntry
(即
TypeA
TypeA/Test
TypeA/Test/1
)。然后,您将为要添加的文件创建最终文件名(假设有),并添加该文件……我理解您的场景。关于这个问题,让我再详细一点。我通过从物理文件系统中的两个不同位置获取文件夹来创建zip。位置1和位置2。现在,我需要将它们保存在zip中不同的父目录下,以便在将来需要时恢复文件夹时变得更容易。这会改变解决方案吗?:)不是真的。根据代码的工作方式,您可以为每个“父”文件夹提供前缀(例如),您只需将前缀添加到正在压缩的文件的
路径/名称
。唯一的要求是文件夹结构的每一层必须组成一个单独的
ZipEntry
,如上所述。。。