当前位置: 首页 > 知识库问答 >
问题:

Java:维护压缩文件修改日期

麻烨
2023-03-14

一个专有的程序,我正在使用压缩和提取某些文件,而不改变文件的修改日期时解压缩。我也创建了我自己的压缩和提取工具,基于源代码在我们的程序,但当我解压文件,修改日期所有压缩文件显示与解压时间和日期。下面是我提取的代码:

public static int unzipFiles(File zipFile, File extractDir) throws Exception 
{
        int totalFileCount = 0;
        String zipFilePath = zipFile.getPath();

        System.out.println("Zip File Path: " + zipFilePath);

        ZipFile zfile = new ZipFile(zipFile); 
        System.out.println("Size of ZipFile: "+zfile.size());

        Enumeration<? extends ZipEntry> entries = zfile.entries(); 

        while (entries.hasMoreElements()) 
        { 
          ZipEntry entry = entries.nextElement(); 
          System.out.println("ZipEntry File: " + entry.getName());
          File file = new File(extractDir, entry.getName()); 
          if (entry.isDirectory()) 
          { 
            System.out.println("Creating Directory");
            file.mkdirs(); 
          } 
          else 
          { 
            file.getParentFile().mkdirs(); 
            InputStream in = zfile.getInputStream(entry); 
            try 
            { 
              copy(in, file); 
            } 
            finally 
            {   
              in.close(); 
            } 
          } 
          totalFileCount++;
        }
        return totalFileCount; 
      } 

private static void copy(InputStream in, OutputStream out) throws IOException 

{

  byte[] buffer = new byte[1024]; 
  System.out.println("InputStream/OutputStram copy");
  while (true) 
  { 
    int readCount = in.read(buffer); 
    if (readCount < 0) 
    { 
      break; 
    } 
    out.write(buffer, 0, readCount); 
   } 
} 

我相信除了复制inputstream/outputstream之外,还有一种更好的方法可以做到这一点。我确信这是罪魁祸首,因为使用winRAR进行提取不会更改压缩文件的日期。

共有1个答案

魏航
2023-03-14

使用zipentry.getTime获取上次修改的时间,并在复制完成后使用file.setlastmodified在文件上设置该时间。

 类似资料:
  • 我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?

  • 问题内容: 我想使用Java代码将文件压缩为zip,rar和7z格式。我也想在指定位置解压缩这些文件。谁能告诉我如何在Java中使用7-zip压缩和解压缩文件? 问题答案: 我用过:sevenzipjbinding.jar sevenzipjbinding-Allplatforms.jar 我现在可以使用这些jar解压缩文件。 尝试使用此链接进行解压缩:http : //sourceforge.n

  • 首先,我没有看到任何其他问题可以“直接”帮助我解决问题,这就是为什么我决定创建一个新的问题。 以下代码被编程为解压缩多个文件和文件夹。 这段代码工作正常,但有一个重要的错误:它解压缩文件夹,但不是像这样显示它们: 文件1。txt 它显示了这一点: file1.txt file2.txt file3.txt file4.txt file5.txt file6.txt 我做错了什么?

  • 各位好心读到这篇文章的人好啊。 我正在使用一个Java程序,我没有制作它,但是我正在改进它,问题是你可以添加文件,但是我想验证,这样添加的文件就不会被压缩成任何人类已知的格式,所以我不想让人们能够添加zip文件、rar文件、7z文件、gz文件等等。 *编辑:IT学生使用的程序,他们添加源代码的文件(.java,.class,.php,.doc,.mdb),路径保存在字符串中,最后,程序压缩文件,并

  • 问题内容: 我有一个密码保护Excel文件的问题。 情况是,我有一个zip文件,其中有一个Excel文件。我需要编写一个Java程序,以密码保护Excel文件。因此,用户应该能够解压缩文件(压缩文件无需密码保护)。但是,Excel需要使用密码保护。当用户尝试解压缩文件时,他应该能够解压缩。当他尝试打开Excel文件(位于解压缩的文件夹内)时,它必须要求输入密码。问题类似于使用Java保护excel

  • 问题内容: 任何人都可以向我展示在我一直在搜索的Java中压缩和解压缩tar.gzip文件的正确方法,但是我能找到的最多是zip或gzip(单独)。 问题答案: 我最喜欢的是plexus-archiver-请参阅GitHub上的资源。 另一个选项是Apache commons- compress- (请参阅mvnrepository)。 使用plexus-utils,用于取消存档的代码如下所示: