- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 iOS-libarchive 库在 iPhone 上提取 .tar。我正在使用此链接中给出的示例代码 http://code.google.com/p/libarchive/wiki/Examples 但我在提取 .tar 文件时遇到问题。我将 .tar 文件放在库/模拟器.../Application/617C31E0/Documents 文件夹中。
当我运行应用程序进行提取时,它会成功完成流程,而不会给出任何错误代码。但我无法在机器中的任何位置精炼提取的文件夹。
这是我在我的应用程序中使用的代码
static int copy_data(struct archive *ar, struct archive *aw)
{
int r;
const void *buff;
size_t size;
off_t offset;
for (;;) {
r = archive_read_data_block(ar, &buff, &size, &offset);
if (r == ARCHIVE_EOF)
return (ARCHIVE_OK);
if (r != ARCHIVE_OK)
return (r);
r = archive_write_data_block(aw, buff, size, offset);
if (r != ARCHIVE_OK) {
warn("archive_write_data_block()",
archive_error_string(aw));
return (r);
}
}
}
static int verbose = 0;
static void extract(const char *filename, int do_extract, int flags)
{
struct archive *a;
struct archive *ext;
struct archive_entry *entry;
int r;
a = archive_read_new();
ext = archive_write_disk_new();
archive_write_disk_set_options(ext, flags);
/*
* Note: archive_write_disk_set_standard_lookup() is useful
* here, but it requires library routines that can add 500k or
* more to a static executable.
*/
archive_read_support_format_tar(a);
/*
* On my system, enabling other archive formats adds 20k-30k
* each. Enabling gzip decompression adds about 20k.
* Enabling bzip2 is more expensive because the libbz2 library
* isn't very well factored.
*/
if (filename != NULL && strcmp(filename, "-") == 0)
filename = NULL;
if ((r = archive_read_open_file(a, filename, 10240)))
fail("archive_read_open_file()",
archive_error_string(a), r);
for (;;) {
r = archive_read_next_header(a, &entry);
if (r == ARCHIVE_EOF)
break;
if (r != ARCHIVE_OK)
fail("archive_read_next_header()",
archive_error_string(a), 1);
if (verbose && do_extract)
msg("x ");
if (verbose || !do_extract)
msg(archive_entry_pathname(entry));
if (do_extract) {
r = archive_write_header(ext, entry);
if (r != ARCHIVE_OK)
warn("archive_write_header()",
archive_error_string(ext));
else {
copy_data(a, ext);
r = archive_write_finish_entry(ext);
if (r != ARCHIVE_OK)
fail("archive_write_finish_entry()",
archive_error_string(ext), 1);
}
}
if (verbose || !do_extract)
msg("\n");
}
archive_read_close(a);
archive_read_finish(a);
exit(0);
}
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
// Override point for customization after application launch
[window makeKeyAndVisible];
// Extract files from archive into named dir in the temp dir
NSString* databaseName = @"PIIS147020451170078X.tar";
NSArray* documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDir = [documentPaths objectAtIndex:0];
NSString* make7zResPath = [documentsDir stringByAppendingPathComponent:databaseName];
/*
NSString *tmpDirname = @"Extract7z";
NSString *make7zFilename = @"PIIS147020451170078X";//@"test.7z";
NSString *make7zResPath = [[NSBundle mainBundle] pathForResource:make7zFilename ofType:@"tar"];
*/
extract([make7zResPath cStringUsingEncoding:NSUTF8StringEncoding],1, ARCHIVE_EXTRACT_TIME);
return;
}
请帮我解决这个问题:(。
谢谢!!
最佳答案
我编写了另一个库,它完全可以满足您的需求:https://github.com/mhausherr/Light-Untar-for-iOS
简而言之,我只实现了解压文件的最少功能。完整解释在这里http://blog.octo.com/en/untar-on-ios-the-pragmatic-way/
关于iphone - 使用 iOS-libarchive 库提取 .tar 文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6757324/
我已经编写了一个 C 程序来使用 libarchive 从 tar 存档中提取文件。 我想从此存档中提取文件并将其打印到标准输出。 但是我得到了额外的字符 .这是垃圾,但它来自另一个文件(可能与存档中
我正在尝试使用 libarchive 压缩/解压缩文件夹。但是,我不知道如何使用它? 最佳答案 包括这些: #include #include 并编译: gcc -Wall -o test tes
我有一个 tar 文件,我想使用 libarchive 将其提取到特定目录。如何将 libarchive 提取到我想要的任何目录?目前,它总是 提取到我程序的工作目录中。我看了this answer但
任何人都可以帮助展示使用 libarchive 的示例将ZIP文件解压到指定文件夹?看起来提供的示例程序(untar.c、tarfilter.c 和 minitar)都将存档提取到当前工作目录。有没有
我正在尝试使用 libarchive 库重命名存档的条目。特别是我正在使用函数 archive_entry_set_pathname。 文件和空目录被正确重命名,但不幸的是,如果目录不为空,这将不起作
我有一个 C++ 程序,我想从磁盘中读取一些描述的存档。我想以大致类似树的形式重建它以反射(reflect)磁盘上的结构(不支持符号链接(symbolic link)/硬链接(hard link)等时
我尝试修改(在内存中) 中的一个文件 zip 存档。但我不明白该怎么做 我可以将源文件读入内存,但我不明白接下来要做什么 你能举个例子我怎么做吗 最佳答案 为什么,这是一个简单的 C++11 示例,替
我正在尝试将一个目录添加到我正在创建的 tar 存档中。存档已创建,但是其中没有文件。 这是我使用 libarchive 的代码(目录是要压缩的目录路径的 QString。) struct archi
我在使用 libarchive 3.3.2 版时遇到问题。我写了一个程序来读取 7z 文件中的选定条目,它看起来像: file.7z |__ file.xml |__ file.fog
我已经掌握了 libarchive并按照 build instructions 在 Windows 和 Linux 上构建示例. 我现在想在我的基于 Qt 的项目中使用这个库,所以我正在使用 Qt C
我正在尝试以编程方式将 gzip 文件解压缩到内存中,并使用 libarchive project 模拟命令 gzip -d file.gz .该文件实际上取自具有以下 header 的 http 响
我正在使用 iOS-libarchive 库在 iPhone 上提取 .tar。我正在使用此链接中给出的示例代码 http://code.google.com/p/libarchive/wiki/Ex
release notes对于 libarchive 声明,由于 MacOS 中包含旧版本的 libarchive,因此他们建议更改 LD_LIBRARY_PATH 以指向 libarchive 的最
我正在尝试在 Linux 下为 win32 交叉编译一个小程序。它使用 libarchive,它可以在我的 fedora 23 安装上的 mingw 中使用(全部通过 dnf 安装),但我遇到了很多链
我要添加libarchive到我的应用程序,以便能够提取 tar.gz。 正如安装说明所说,我采取了以下步骤: cmake -G "Xcode"~/libarchive-download-dir/ 制
我一定是遗漏了一些简单的东西。对于我的程序调用的任何 libarchive 函数,我都收到“ undefined symbol :...”。 此外,尝试使用推荐的命令编译示例程序之一: gcc -Wa
我在我的项目中使用 libarchive 已经有一段时间了,它工作得很好,目前我正在动态链接到它,所以在 Windows 上,libarchive.dll 文件必须出现在系统上。我现在想静态链接到库,
我正在尝试让 libarchive 模块在 Windows 上的 python 3.4 中工作。我已经用 pip 安装了 libarchive-c,一切正常,但每当我尝试将它导入我的代码或什至单独运行
总结 我如何在 C++ 中使用 libarchive 编写一个 zip 文件,这样路径名称将被 UTF-8 编码?使用 UTF-8 路径名时,特殊字符将在使用 OS X/Linux/Windows 8
我正在使用 macOS Big Sur 并尝试安装 Raku 模块,例如 pakku add App::RaCoCo .我会收到一条消息: Cannot locate native library '
我是一名优秀的程序员,十分优秀!