2011-10-16 28 views
7

我想在我的iPhone应用程序中包含unrar文件选项。iOS上有没有unrar库吗?

我已经尝试https://github.com/ararog/Unrar4iOS但这个库是不完整的(某些功能还没有实现像 - (BOOL)unrarFileTo:(的NSString *)路径覆盖:(BOOL)覆盖)

感谢。

+0

为了将来的参考,如果您考虑“语言和API”与“操作系统”,你会得到更好的搜索结果,否则你会错过完美的好丽braries和示例代码,在iOS或Mac OS X上运行良好。从“unrar objective-c”开始,获得最广泛的结果。 –

+0

请搜索该网站。这已经被问了好几次了。 –

+0

很明显,我在提出这个问题之前进行了大量搜索。 – Alex1987

回答

5

的超集,我结束了使用Unrar4ios,但我需要我自己写函数实际上提取了rar文件:

-(BOOL) unrarFileTo:(NSString*)path overWrite:(BOOL)overwrite { 

    int RHCode = 0, PFCode = 0; 

    [self _unrarOpenFile:filename mode:RAR_OM_EXTRACT]; 

    while ((RHCode = RARReadHeaderEx(_rarFile, header)) == 0) { 

     if ((PFCode = RARProcessFile(_rarFile, RAR_EXTRACT, (char *)[path UTF8String], NULL)) != 0) { 
      [self _unrarCloseFile]; 
      return NO; 
     } 

    } 

    [self _unrarCloseFile]; 


    return YES; 
} 
+3

考虑在github上提交pull请求,以帮助原始项目。 – Moshe

+0

@Moshe:很高兴。问题在于我对github不太熟悉 - 请给我一个简短的解释(或链接),告诉我如何做到这一点? – Alex1987

+0

我自己并不是GitHub,但实际上,您需要分叉回购,进行更改,推送提交,然后请求拉取。我会找到一个链接。 – Moshe

4
+0

我已经试过这个库 - 但它有点不完整。如果你看看源代码,你会发现一些函数并没有被最重要的实现 - (BOOL)unrarFileTo:(NSString *)path overWrite:(BOOL)覆盖。 – Alex1987

+1

@Alex:你看过它附带的示例项目吗?特别是./UnrarExample/Classes/UnrarExampleViewController.mm的-decompress:方法。似乎工作正常。 –

+0

@JoshuaNozzi因为他使用了一种名为extractStream的不同方法,它基本上会返回一个NSData对象。当我们谈论图像时(比如在项目中),它可能会工作 - 但是当涉及更大的文件时则不行。 – Alex1987

0

unrarlib图书馆应该为你工作,因为目标C是C.

+0

你真的尝试过吗?这是一个非常旧的项目(2002-2004),不支持rar 3.x档案 – Alex1987