linux下制作一个zip压缩包,条件是调用zip_open返回错误“ZIP_ER_NOZIP”,但是zip压缩包可以被unzip解压
时间: 2024-03-02 17:53:04 浏览: 148
您可以使用以下步骤来制作一个会导致 `zip_open` 返回错误 "ZIP_ER_NOZIP",但可以被 `unzip` 解压的 ZIP 压缩包:
1. 创建一个空文件夹,在其中放置一些文件。
2. 在终端中进入该文件夹,然后运行以下命令:
```
zip -0 -r test.zip .
```
这个命令会创建一个名为 `test.zip` 的 ZIP 压缩包,其中 `-0` 表示使用存储模式(不进行压缩),`-r` 表示递归地将文件夹中的所有文件和子文件夹添加到压缩包中,而 `.` 表示当前文件夹。
3. 现在,您可以尝试使用 `zip_open` 函数打开这个压缩包。您应该会收到 "ZIP_ER_NOZIP" 错误,因为这个压缩包没有任何文件被压缩,所以它不是一个有效的 ZIP 文件。
4. 然后,您可以使用 `unzip` 命令来解压这个压缩包:
```
unzip test.zip
```
这个命令会将所有文件和子文件夹解压到当前文件夹中。
请注意,这个压缩包不包含任何压缩的文件,因此它不是一个有效的 ZIP 文件。但是,它包含了所有原始文件,因此可以被 `unzip` 命令正确解压。
相关问题
zip_open.c中有几种情况返回ZIP_ER_NOZIP,linux下怎么用命令检查一个zip压缩包是不是会返回ZIP_ER_NOZIP
在zip_open.c中,有三种情况会返回ZIP_ER_NOZIP错误码,如上一个回答所述。
在Linux下,可以使用unzip命令检查一个zip压缩包是否为有效的zip文件。如果文件不是有效的zip文件,则unzip命令会显示错误消息。
可以使用以下命令检查zip文件:
```
unzip -t file.zip
```
其中,-t选项表示测试zip文件的完整性,file.zip是要检查的zip文件的名称。如果zip文件是有效的,unzip命令将不会显示任何错误消息。如果zip文件无效,则unzip命令会显示相关错误消息。
unzip可以解压压缩包,但是使用zip_open函数返回错误码19
如果使用unzip命令可以成功解压缩压缩包,但是使用zip_open函数却返回错误码19,那么很可能是zip_open函数的调用参数有误。
请检查以下几个方面:
1. 确保你传递给zip_open函数的zip文件路径正确,并且有权访问该路径。
2. 确保你传递给zip_open函数的标志参数与你的需求相符。例如,如果你只需要读取zip文件中的内容,那么应该使用ZIP_RDONLY标志。
3. 确保你传递给zip_open函数的zip文件指针非空,并且指向正确的文件数据。
如果以上几个方面都没有问题,那么你可以尝试使用zip_error_to_str函数来获取更详细的错误信息。例如:
```
zip_error_t error;
zip_error_init(&error);
zip_t* archive = zip_open("your_archive.zip", ZIP_RDONLY, &error);
if (archive == NULL) {
printf("Failed to open archive: %s\n", zip_error_to_str(&error));
zip_error_fini(&error);
return -1;
}
```
希望这些方法能够帮助你找到问题所在。
阅读全文