标签: truezip

使用Java将文件附加到zip文件

我目前正在提取war文件的内容,然后将一些新文件添加到目录结构,然后创建一个新的war文件.

这一切都是以编程方式从Java完成的 - 但是我想知道复制war文件然后只是附加文件会不会更有效 - 那么我就不必等待战争扩展然后必须再次压缩.

我似乎无法在文档或任何在线示例中找到这样做的方法.

任何人都可以提供一些提示或指示?

更新:

其中一个答案中提到的TrueZip似乎是一个非常好的java库附加到一个zip文件(尽管其他答案说它不可能这样做).

任何人都有关于TrueZip的经验或反馈,或者可以推荐其他类似的图书馆?

java zip war truezip

56
推荐指数
4
解决办法
8万
查看次数

java.nio.file.Files.isWriteable与java.io.File.canWrite()不一致

我有Java代码执行以下操作:

  1. 使用ZIP扩展创建临时空文件 File.createTempFile()
  2. 删除它File.delete()(我们真的只想生成一个临时文件名)
  3. com.google.commons.io.ByteStreams.copy()使用OutputSupplier给定相同文件名的新文件将"模板"ZIP文件复制到同一路径
  4. 使用TrueZIP 7.4.3修改ZIP存档(删除目录)

在特定系统上,第4步一致失败FsReadOnlyArchiveFileSystemException - "This is a read-only archive file system!"(参见http://java.net/projects/truezip/lists/users/archive/2011-05/message/9)

调试TrueZIP代码,我注意到以下内容:

  • 在上述任何步骤之间,此文件上没有打开的文件句柄,特别是在步骤4之前
  • 使用File.canWrite()检查同一文件而不是NIO以完全相同的时间(使用调试器)返回,它表明它是可写的

以下是您在调试器表达式列表中看到的内容:

fn => "C:/myworkdir/temp/myfile4088293380313057223tmp.zip"
java.nio.file.Files.isWritable(java.nio.file.Paths.get(fn)) => false
new java.io.File(fn).canWrite() => true
Run Code Online (Sandbox Code Playgroud)

使用JDK 1.7.04

有任何想法吗?

java nio temporary-files writable truezip

5
推荐指数
3
解决办法
3624
查看次数

读取Zip文件内容而不用Java提取

我有byte [] zipFileAsByteArray

This zip file has rootDir --|
                            | --- Folder1 - first.txt
                            | --- Folder2 - second.txt  
                            | --- PictureFolder - image.png  
Run Code Online (Sandbox Code Playgroud)

我需要获取两个txt文件并读取它们,而无需在磁盘上保存任何文件。只需在内存中进行即可。

我尝试过这样的事情:

ByteArrayInputStream bis = new ByteArrayInputStream(processZip);
ZipInputStream zis = new ZipInputStream(bis);
Run Code Online (Sandbox Code Playgroud)

另外,我将需要有单独的方法来获取图片。像这样:

public byte[]image getImage(byte[] zipContent);
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我提供想法或好的榜样吗?

java zipfile truezip

5
推荐指数
1
解决办法
1万
查看次数

Java - 压缩现有文件

可能重复:
使用Java将文件附加到zip文件

你好Java开发人员,

这是场景:

假设我有一个名为的文本文件sample.txt.我真正想要做的是将sample.txt文件放入一个*.zip名为的文件中TextFiles.zip.

这是我到目前为止所学到的.

try{
    File f = new File(compProperty.getZIP_OUTPUT_PATH());
    zipOut = new ZipOutputStream(new FileOutputStream(f));
    ZipEntry zipEntry = new ZipEntry("sample.txt");
    zipOut.putNextEntry(zipEntry);
    zipOut.closeEntry();
    zipOut.close();
    System.out.println("Done");

} catch ( Exception e ){
    // My catch block
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的代码创建了一个*.zip文件并插入了该sample.txt文件
我的问题是如何将现有文件插入到创建的*.zip文件中?
如果您的回答与TrueZIP有关,请发布SSCCE.

我做了以下事情:

  • 谷歌搜索
  • 搜索现有问题.(发现很少.没有答案.有些人没有回答我的具体问题.
  • 阅读TrueZip.然而,我无法理解一件事.(请理解)

java zip append truezip

4
推荐指数
1
解决办法
1万
查看次数

TrueZip - 如何解压缩内部jar/zip文件而不将它们扩展为目录?

我正在使用TrueZip 7创建一个tzp文件,并使用cp_rp方法将所有目录内容一次性添加到tzp文件中.

之后,我正在尝试将tzp文件的所有内容提取到目标目录.但是,电话:

zipFile = new TFile("test.zip");
public void extract(TFile file){
  for (TFile iFile : zipFile.listFiles()){
    if(iFile.isDirectory()){
       extract(iFile);
    }else{
       File output = new File(iFile.getPath());
       iFile.mv(output);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

失败并出现错误:java.io.IOException:[path]\test.zip\Myjar.jar(目标已存在).如果我使用cp而不是mv,那么错误是[path]\test.zip\Myjar.jar(包含在[path]\test.zip\Myjar.jar中)

问题似乎也是TrueZip将zip和jar识别为目录和档案,因此当对它们执行isDirectory()时,这会成功,并且执行listFiles()会返回其中包含的所有文件,因此运行cp()on文件递归导致所有jar/zip内容被复制为目录.

提取这些存档文件而不扩展它们的正确方法是什么?

java truezip

2
推荐指数
1
解决办法
2446
查看次数

如何使用Java中的truezip从tar中的jar列表文件()?

我试图列出tar中的所有文件,包括jar中的文件.

如何在Java或其他api中使用truezip来完成此操作?

谢谢

java jar tar truezip

1
推荐指数
1
解决办法
1185
查看次数

标签 统计

java ×6

truezip ×6

zip ×2

append ×1

jar ×1

nio ×1

tar ×1

temporary-files ×1

war ×1

writable ×1

zipfile ×1