zip 相关问题

ZIP是压缩文件存档的格式,允许将多个文件和目录打包到一个文件中。

并行处理 ZipArchive 条目

我需要将 ZipArchive 条目作为字符串处理。目前我有这样的代码: 使用 (ZipArchive archive = ZipFile.OpenRead(zipFileName)) { foreach(archive.Entries 中的 ZipArchiveEntry 条目...

回答 1 投票 0

使用jar命令将.zip文件解压到特定目录

如何在命令提示符下使用 jar 命令将 .zip 文件解压缩到特定目录? 例如。我有一个名为 stackover.zip 的 zip 文件。现在我想使用 jar 命令提取 zip 文件中的文件。 ...

回答 1 投票 0

如何导出包含所有场景的整个 Unity 项目?

我想将 Unity 项目导出为 ZIP 文件夹,但我不能。当我单击“资源”>“导出包”时,仅导出一个场景。我想导出项目以便我可以发送它。

回答 4 投票 0

在 AIX 上查找、tar 和 zip 文件的单个复杂命令

我有一个很长的Linux csh 命令,可以查找/tars/ 并压缩目录的所有子目录中的所有文件。它看起来像这样: 查找/dir1/dir2/* -mtime -1 -type -f -print0 | xargs -0 tar -zcf /dir1/d...

回答 1 投票 0

使用 Zip 文件恢复 Flutter 应用程序中不完整的下载

我正在开发一个 Flutter 应用程序,用户可以在其中下载 zip 文件。我已经实现了下载功能,但遇到了问题。我想启用恢复道琼斯指数的功能...

回答 1 投票 0

使用 python zipfile 归档符号链接

我有一个脚本,可以创建包含符号链接的目录的 zip 文件。我 惊讶地发现 zip 文件已经压缩了目标 链接而不是链接本身,这就是我

回答 6 投票 0

为什么当我“压缩”2 个相同的目录时会得到 2 个不同的二进制文件?

如果重要的话,这是在Mac上。 zip 是版本 3.0,unzip 是版本 6.0(我期望操作系统附带的版本)。 如果我执行以下操作: 从通用的“pptx”文件开始,将其解压缩到一个目录中,

回答 1 投票 0

Python“问题”:简单的代码,出现错误的计算(关于计算团队分数的代码战争任务)-为什么以及哪里出错了?

从代码战中解决任务(“kata”)。 根据我如何解决问题的简洁和简化的描述: 给定两个列表,其中包含两支球队的比赛结果 x 和 y(10 m...

回答 1 投票 0

如何创建加密的ZIP文件?

我正在Python 2.5中使用ZipFile创建一个ZIP文件,到目前为止它工作正常: 导入zip文件,操作系统 locfile =“测试.txt” loczip = os.path.splitext (locfile)[0] + ".zip" zip = zip 文件。

回答 9 投票 0

需要使用 Node.js 压缩整个目录

我需要使用 Node.js 压缩整个目录。我目前正在使用node-zip,每次该进程运行时都会生成一个无效的ZIP 文件(正如您可以从此Github问题中看到的那样)。 有没有...

回答 15 投票 0

为什么 sonarqube 存在安全问题?

我有以下方法: 公共列表 getZipFileList(String fullPath) 抛出 IOException { logger.debug("====> ZipService: getZipFileList <====");

回答 1 投票 0

当文件不在中央目录中但有自己的 LFH 时,是否有工具可以从 ZIP 存档中提取该文件?

我正在寻找一种可以通过 ZIP 存档进行积极搜索来提取文件的工具。压缩文件前面有 LFH,但不存在 CDH。解压输出一个空文件夹。 我...

回答 1 投票 0

Ziparchive 不谈论受密码保护的 zip 文件的密码?

我有受密码保护的 zip 文件。我想解压该文件但需要正确的密码。 即使我输入错误的密码,文件也会被解压缩,这不是发生的事情。 我正在使用以下...

回答 2 投票 0

尝试使用python从word中提取文本时出错?

我目前正在尝试用 Python 编写一个函数,该函数允许我从 .docx 文件中提取文本。为此,我使用 python-docx 库。我的程序也做了它应该做的事情,至少

回答 1 投票 0

Powershell 解压并重命名为 ZIP 文件名

我得到了一个应用程序,可以生成一个 ZIP 文件,其中包含 HTML 文档。然而,提取的 HTML 文件的名称与 zip 文件的名称不同(由于某些奇怪的原因,我无法控制

回答 3 投票 0

使用 python/unix 安全地提取 zip 和 tar.gz 文件

我正在构建一个应用程序,用户可以在其中上传文件,我需要将它们提取到我的服务器上。我担心这可能存在多个安全漏洞。 这……

回答 1 投票 0

Azure 数据工厂在不创建文件夹的情况下缩小

我有一个数据工厂 v2 作业,它将文件从 SFTP 服务器复制到 Azure Data Lake Gen2。 .csv 文件和 .zip 文件混合存在(每个文件仅包含一个 csv 文件)。 我有一个数据集...

回答 2 投票 0

python 邮件脚本 - 添加 zip

我想寻求建议,将 zip 选项添加到我用于发送报告的邮件脚本中。 我将电子邮件附件限制设置为 25MB,因此一些 json 格式的报告...

回答 3 投票 0

Python ZipFile.testzip() 接受无效的 ZIP 文件

我正在使用内置的 ZipFile 及其 testzip() 方法来验证某些用户提供的 zip 文件是否有效。 不幸的是 ZipFile 似乎应用了额外的启发式方法,因为它接受例如...

回答 3 投票 0

内存和硬盘中的 Zip 不同,导致下载后 Zip 损坏

大家好我想实现一个zip下载。我有一个网络应用程序,用户可以单击按钮: 大家好我想实现一个zip下载。我有一个网络应用程序,用户可以单击按钮: <template> <button name="exportButton" id="exportButton" @click="convertConfigurationToZip" :class="['button']">{{ exportConfig }} </button> </template> methods: { async convertConfigurationToZip() { // Stores the current config in "store.config" RestResource.convertConfigurationToZip(); const configData = store.config; await new Promise((resolve) => setTimeout(resolve, 2000)); // A Blob represents raw binary data const blob = new Blob([configData], {type: 'application/zip'}); // Use file-saver to trigger the download saveAs(blob, 'ProCAKE_Configuration') RestResource中调用的函数如下: convertConfigurationToZip: () => { axios .get("http://localhost:8080/api/conversion/convertConfigurationToZip/") .then((response: any) => { console.log(response.data); store.config = response.data; }) .catch((error: any) => { console.log(error); }) } 被调用的控制器如下所示: package controller; import io.swagger.annotations.*; import jakarta.annotation.Resource; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.container.AsyncResponse; import jakarta.ws.rs.container.Suspended; import jakarta.ws.rs.core.Response; import services.ConversionService; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; // This Controller should be used for creating zip files that contains the ProCake-Configuration @Api(tags = "Conversion Controller", authorizations = { @Authorization(value = "basicAuth") }) @Path("/conversion") public class ConversionController { @Resource ExecutorService executorService; @ApiOperation(value = "Convert Config into Zip") @ApiResponses({ @ApiResponse(code = 200, message = "Config as Zip"), @ApiResponse(code = 503, message = "ProCAKE not started/configured properly") }) @GET @Path("/convertConfigurationToZip") public void convertConfigurationToZip(@Suspended final AsyncResponse response) { executorService = Executors.newSingleThreadExecutor(); executorService.submit(() -> { try { response.resume(Response.status(200).entity(new ConversionService().convertConfigurationToZip()).build()); } catch (Exception e) { response.resume(e); } executorService.shutdown(); }); } } 处理 Zip 文件的服务如下所示: package services; import de.uni_trier.wi2.procake.data.model.Model; import de.uni_trier.wi2.procake.data.model.ModelFactory; import de.uni_trier.wi2.procake.similarity.SimilarityModel; import de.uni_trier.wi2.procake.similarity.SimilarityModelFactory; import de.uni_trier.wi2.procake.utils.io.IOUtil; import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; import org.apache.commons.io.IOUtils; import org.apache.jena.sparql.exec.RowSet; import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.zip.ZipInputStream; public class ConversionService { public byte[] convertConfigurationToZip() throws IOException { try { // Create Zip on Harddrive List<File> listOfFiles = new ArrayList<File>(); File hello = new File("pathToFile"); File world = new File("pathToFile"); listOfFiles.add(hello); listOfFiles.add(world); IOUtil.createZipFile("pathToZip", listOfFiles); // --------------------- // Create Zip File in Memory ByteArrayOutputStream baos = IOUtil.createZipFileInMemory(listOfFiles); ; // --------------------- // Compare both Zip Files byte[] zipContentHardDrive = Files.readAllBytes(Paths.get("pathToFile")); byte[] zipContentMemory = baos.toByteArray(); int minLength = Math.min(zipContentMemory.length, zipContentHardDrive.length); if (!Arrays.equals( Arrays.copyOf(zipContentMemory, minLength), Arrays.copyOf(zipContentHardDrive, minLength))) { throw new IOException("The Zip Files are different."); } // --------------------- return zipContentMemory; }catch (Exception e) { System.out.println("Could not create Zip File"); } return null; } } 最后,在我详细介绍我的问题之前,这里是 IOUtil 方法: public static ByteArrayOutputStream createZipFileInMemory(List<File> files) throws IOException { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ZipArchiveOutputStream zipArchiveOutputStream = new ZipArchiveOutputStream( byteArrayOutputStream); for (File file : files) { addZipEntry(zipArchiveOutputStream, file); } zipArchiveOutputStream.finish(); return byteArrayOutputStream; } private static void addZipEntry(ArchiveOutputStream archiveOutputStream, File file) throws IOException { String entryName = file.getName(); ArchiveEntry archiveEntry = new ZipArchiveEntry(file, entryName); archiveOutputStream.putArchiveEntry(archiveEntry); if (file.isFile()) { Files.copy(file.toPath(), archiveOutputStream); } archiveOutputStream.closeArchiveEntry(); } createZipFile 工作完全正常。 我的问题是,我从下载中获得的 zip 文件比我直接在硬盘上创建的文件大 200 字节左右。我也无法打开更大的 zip 文件。用 vim 打开较大的 zip 文件后,我可以看到内容与较小的 zip 文件完全不同: 较小的拉链: " zip.vim 版本 v33 " 浏览 zip 文件路径ToZip " 用光标选择文件并按 ENTER 你好.txt 世界.txt 这是更大的一个: PK^C^D^T^@^H^H^H^@���W^@^@^@^@^@^@^@^@^@^@^@^@ ^@5^@ hello.txtUT^M^@^G���eִ�e���e 我不知道我在内存中创建 zip 文件的方法是否错误,或者传输到 store.config 时是否出现问题。 还有一件事值得注意的是 zipContentHardDrive 和 zipContentMemory 是不同的: zip内容硬盘: [80, 75, 3, 4, 20, 0, 0, 8, 8, 0, -72, -114, -103, 87, 32, 48, 58, 54, 8, 0, 0, 0, 6, 0、0、0、9、0、53、0、104、101、108、108、111、46、116、120、116、85、84、13、0、7、-99、-77、-119 , 101, -42, -76, -119, 101, -99, -77, -119, 101, 10, 0, 32, 0, 0, 0, 0, 0, 1, 0, 24, 0, - 106, 85, -35, -18, 82, 55, -38, 1, 4, 18, -88, -87, 83, 55, -38, 1, -128, 76, -114, -18, 82 , 55, -38, 1, -53, 72, -51, -55, -55, -25, 2, 0, +322 更多] zip内容内存: [80, 75, 3, 4, 20, 0, 8, 8, 8, 0, -72, -114, -103, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0、0、0、9、0、53、0、104、101、108、108、111、46、116、120、116、85、84、13、0、7、-99、-77、-119 , 101, -42, -76, -119, 101, -99, -77, -119, 101, 10, 0, 32, 0, 0, 0, 0, 0, 1, 0, 24, 0, - 106, 85, -35, -18, 82, 55, -38, 1, 4, 18, -88, -87, 83, 55, -38, 1, -128, 76, -114, -18, 82 , 55, -38, 1, -53, 72, -51, -55, -55, -25, 2, 0, +354 更多] 我不确定是否是这样,因为 zip 文件在内存中和不在内存中时通常是不同的。 如果有人能帮助我理解并解决我的问题,我将非常感激。 非常感谢您抽出时间! 更新1 经过以下测试后,我发现由于未知原因,createZipFileInMemory 方法无法像 CoonversionService 中那样工作。 @Test public void testCreateZipFileInMemoryWithFiles() throws IOException { IOUtil.writeFile(graph, PATH_GRAPH_TXT); IOUtil.writeFile(graph, PATH_GRAPH_XML); File fileText = new File(PATH_GRAPH_TXT); File fileXML = new File(PATH_GRAPH_XML); List<File> listOfFiles = new ArrayList<>(); listOfFiles.add(fileText); listOfFiles.add(fileXML); ByteArrayOutputStream zipFileInMemory = IOUtil.createZipFileInMemory(listOfFiles); assertNotNull(zipFileInMemory); // Now let's check if the data stored in the memory is actually the right Zip-file // Therefore let's create an actual Zip-File on our hard drive IOUtil.createZipFile(PATH_CREATED_ZIP, listOfFiles); // Read the content of the created zip file byte[] actualZipContent = Files.readAllBytes(Paths.get(PATH_CREATED_ZIP)); // Compare the contents of the files within the zip ZipInputStream dataOfMemoryZip = new ZipInputStream(new ByteArrayInputStream(zipFileInMemory.toByteArray())); ZipInputStream dataOfHardDriveZip = new ZipInputStream(new ByteArrayInputStream(actualZipContent)); ZipEntry memoryEntry; ZipEntry hardDriveEntry; while ((memoryEntry = dataOfMemoryZip.getNextEntry()) != null) { hardDriveEntry = dataOfHardDriveZip.getNextEntry(); assertEquals(memoryEntry.getName(), hardDriveEntry.getName()); byte[] expectedFileContent = IOUtils.toByteArray(dataOfMemoryZip); byte[] actualFileContent = IOUtils.toByteArray(dataOfHardDriveZip); assertArrayEquals(expectedFileContent, actualFileContent); } } 这里的内容总是一样的。我不明白为什么 ConversionService 类中的内容不同,因为我使用相同的文件和相同的方法。 您创建的 zip 文件的部分十进制转储确实不同。 zipContentMemory 已创建 streamed zip 文件,而 zipContentHarddrive 尚未创建。这足以解释为什么一个 zip 文件可以工作,而另一个却不能。 注意:如果没有看到完整的 zip 文件,就不可能 100% 确定这一点。 zip 文件中可能存在一些其他差异,导致您遇到问题。如果有机会的话,发布完整的 zip 转储。 部分 zipContentHarddrive zip 文件看起来像这样 0000 LOCAL HEADER #1 04034B50 (67324752) 0004 Extract Zip Spec 14 (20) '2.0' 0005 Extract OS 00 (0) 'MS-DOS' 0006 General Purpose Flag 0800 (2048) [Bits 1-2] 0 'Normal Compression' [Bit 11] 1 'Language Encoding' 0008 Compression Method 0008 (8) 'Deflated' 000A Last Mod Date/Time 57E6F1C7 (1474752967) 'Invalid Date or Time' 000E CRC 363A3020 (909783072) 0012 Compressed Size 00000008 (8) 0016 Uncompressed Size 00000006 (6) 001A Filename Length 0009 (9) 001C Extra Length 0035 (53) 001E Filename 'hello.txt' 0027 Extra ID #1 5455 (21589) 'Extended Timestamp [UT]' 0029 Length 000D (13) 002B Flags 07 (7) 'mod access change' 002C Mod Time 65F6CCE2 (1710673122) 'Sun Mar 17 10:58:42 2024' 0030 Access Time 65F6CBA9 (1710672809) 'Sun Mar 17 10:53:29 2024' 0034 Change Time 65F6CCE2 (1710673122) 'Sun Mar 17 10:58:42 2024' 0038 Extra ID #2 000A (10) 'NTFS FileTimes' 003A Length 0020 (32) 003C Reserved 00000000 (0) 0040 Tag1 0001 (1) 0042 Size1 0018 (24) 0044 Mtime 01A5375291A255E9 (118561792965367273) 'Thu Sep 16 07:08:16 1976 536727300ns' 004C Atime 01A53753D6D71204 (118561798421418500) 'Thu Sep 16 07:17:22 1976 141850000ns' 0054 Ctime 01A5375291F14CFF (118561792970542335) 'Thu Sep 16 07:08:17 1976 54233500ns' 部分 zipContentMemory zip 文件看起来像这样 0000 LOCAL HEADER #1 04034B50 (67324752) 0004 Extract Zip Spec 14 (20) '2.0' 0005 Extract OS 00 (0) 'MS-DOS' 0006 General Purpose Flag 0808 (2056) [Bits 1-2] 0 'Normal Compression' [Bit 3] 1 'Streamed' [Bit 11] 1 'Language Encoding' 0008 Compression Method 0008 (8) 'Deflated' 000A Last Mod Date/Time 57E6F1C7 (1474752967) 'Invalid Date or Time' 000E CRC 00000000 (0) 0012 Compressed Size 00000000 (0) 0016 Uncompressed Size 00000000 (0) 001A Filename Length 0009 (9) 001C Extra Length 0035 (53) 001E Filename 'hello.txt' 0027 Extra ID #1 5455 (21589) 'Extended Timestamp [UT]' 0029 Length 000D (13) 002B Flags 07 (7) 'mod access change' 002C Mod Time 65F6CCE2 (1710673122) 'Sun Mar 17 10:58:42 2024' 0030 Access Time 65F6CBA9 (1710672809) 'Sun Mar 17 10:53:29 2024' 0034 Change Time 65F6CCE2 (1710673122) 'Sun Mar 17 10:58:42 2024' 0038 Extra ID #2 000A (10) 'NTFS FileTimes' 003A Length 0020 (32) 003C Reserved 00000000 (0) 0040 Tag1 0001 (1) 0042 Size1 0018 (24) 0044 Mtime 01A5375291A255E9 (118561792965367273) 'Thu Sep 16 07:08:16 1976 536727300ns' 004C Atime 01A53753D6D71204 (118561798421418500) 'Thu Sep 16 07:17:22 1976 141850000ns' 0054 Ctime 01A5375291F14CFF (118561792970542335) 'Thu Sep 16 07:08:17 1976 54233500ns'

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.