标签: lzma

为什么*.tar.gz仍然比*.tar.xz更常见?

每当我看到一些使用GZip压缩的源包或二进制文件时,我想知道是否还有理由支持gz超过xz(不包括到2000年的时间旅行),LZMA压缩算法的节省是巨大的,并且解压缩的幅度不会比gzip的.

compression zip lzma xz

63
推荐指数
5
解决办法
4万
查看次数

如何使用7z SDK压缩和解压缩文件

根据此链接如何使用.NET创建7-Zip存档?,WOPR告诉我们如何使用7z SDK(http://www.7-zip.org/sdk.html )使用LMZA(7z压缩算法)压缩文件

using SevenZip.Compression.LZMA;
private static void CompressFileLZMA(string inFile, string outFile)
{
   SevenZip.Compression.LZMA.Encoder coder = new SevenZip.Compression.LZMA.Encoder();

   using (FileStream input = new FileStream(inFile, FileMode.Open))
   {
      using (FileStream output = new FileStream(outFile, FileMode.Create))
      {
          coder.Code(input, output, -1, -1, null);
          output.Flush();
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

但是如何解压呢?

我尝试:

private static void DecompressFileLZMA(string inFile, string outFile)
        {
            SevenZip.Compression.LZMA.Decoder coder = new SevenZip.Compression.LZMA.Decoder();
            using (FileStream input = new FileStream(inFile, FileMode.Open))
            {
                using (FileStream output = new FileStream(outFile, FileMode.Create))
                {
                    coder.Code(input, output, input.Length, …
Run Code Online (Sandbox Code Playgroud)

c# compression sdk 7zip lzma

23
推荐指数
2
解决办法
4万
查看次数

为什么LZMA SDK(7-zip)这么慢

我发现7-zip很棒,我想在.net应用程序上使用它.我有一个10MB的文件(a.001),它需要:

在此输入图像描述

2秒编码.

如果我能在c#上做同样的事情,那将会很好.我已经下载了http://www.7-zip.org/sdk.html LZMA SDK c#源代码.我基本上将CS目录复制到visual studio中的控制台应用程序中: 在此输入图像描述

然后我编译和eveything编译顺利.所以在输出目录中我放置了a.00110MB大小的文件.关于我放置的源代码的主要方法:

[STAThread]
    static int Main(string[] args)
    {
        // e stands for encode
        args = "e a.001 output.7z".Split(' '); // added this line for debug

        try
        {
            return Main2(args);
        }
        catch (Exception e)
        {
            Console.WriteLine("{0} Caught exception #1.", e);
            // throw e;
            return 1;
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我执行控制台应用程序时,应用程序运行良好,我得到a.7z工作目录上的输出.问题是需要很长时间.执行大约需要15秒!我也试过/sf/answers/614314921/方法,这也需要很长时间.为什么它比实际程序慢10倍?

即使我设置只使用一个线程: 在此输入图像描述

它仍然需要更少的时间(3秒对15):


(编辑)另一种可能性

可能是因为C#比汇编还是C慢?我注意到该算法执行了大量繁重的操作.例如,比较这两个代码块.他们都做同样的事情:

C

#include <time.h>
#include<stdio.h>

void main()
{
    time_t now; 

    int i,j,k,x;
    long …
Run Code Online (Sandbox Code Playgroud)

c# compression performance 7zip lzma

22
推荐指数
2
解决办法
1万
查看次数

支持7zip(LZMA)的C#免费压缩库

我有一个程序(用C#编写)直接读取/写入数据(没有服务器的直接文件访问)到firebird数据库文件.为了更好的交换,我希望(un)在导入/导出时压缩它们,以便通过互联网进行更好的交换,而无需外部程序来(不)压缩它们.

我知道#ziplib支持Zip,GZip,Tar和BZip2.

你知道C#还有哪些免费的压缩库?是否有支持LZMA的.NET库,因此我可以读/写".7z"文件?

c# compression 7zip lzma

18
推荐指数
3
解决办法
4万
查看次数

C++ lzma按部分压缩和解压缩大流

我需要动态地进行lzma压缩和解压缩.我在Qt中通过qnetworkmanager收到一个大文件,我需要在下载数据流时解压缩它.

当我收到部分数据流时,我需要将其解压缩,附加到文件,然后在此过程中释放任何已用内存.做这个的最好方式是什么?

现在我正在尝试使用xz-utils,纯c api,也许有人可以提出更好的方法吗?

以下代码基于示例

UPD2:

extern "C" void *lz_alloc(void *opaque, size_t nmemb, size_t size)
{
void *p = NULL;
try{
    p = new char [size];
}
catch(std::bad_alloc &ba)
{
    p = NULL;
}
return p;
}

extern "C" void lz_free(void *opaque, void *ptr)
{
delete [] (char*)ptr;
}


QByteArray lzCompress(QByteArray data)
{
QByteArray arr;
lzma_check check = LZMA_CHECK_CRC64;
lzma_stream strm = LZMA_STREAM_INIT; /* alloc and init lzma_stream struct */
lzma_allocator al;
al.alloc = lz_alloc;
al.free = lz_free; …
Run Code Online (Sandbox Code Playgroud)

c++ qt lzma

17
推荐指数
1
解决办法
7533
查看次数

如何使用LZMA SDK在Java中压缩/解压缩

http://www.7-zip.org/sdk.html 这个网站提供了一个用于压缩/解压缩文件的LZMA SDK,我想试一试,但我迷路了.

有人有这方面的经验吗?还是教程?谢谢.

java 7zip lzma

16
推荐指数
2
解决办法
4万
查看次数

如何从apple macOS更新包中的'Payload'文件中提取内容?

我正在提取macOS sierra更新包 - macOSUpd10.12.1.pkg使用以下命令到/ tmp/macosupd目录.

pkgutil --expand /Volumes/macOS\ Sierra\ Update/macOSUpd10.12.1.pkg /tmp/macosupd 
Run Code Online (Sandbox Code Playgroud)

我可以看到以下包捆绑在metapackage中.

-rwxr-xr-x   1  Distribution
drwxr-xr-x   6  FirmwareUpdate.pkg
drwxr-xr-x   5  FullBundleUpdate.pkg
drwxr-xr-x  36  Resources
drwxr-xr-x   6  macOSUpd10.12.1.pkg
Run Code Online (Sandbox Code Playgroud)

我无法提取Payload文件的内容.例如,当我尝试提取macOSUpd10.12.1.pkg的Payload时,我收到以下错误消息:

用tar:

tar -xvf macOSUpd10.12.1.pkg/Payload 
tar: Unrecognized archive format
tar: Error exit delayed from previous errors.
Run Code Online (Sandbox Code Playgroud)

与xar:

xar -xvf macOSUpd10.12.1.pkg/Payload 
Error opening xar archive: macOSUpd10.12.1.pkg/Payload
Run Code Online (Sandbox Code Playgroud)

当我在有效负载文件上运行file命令时,我得到一条消息:

file macOSUpd10.12.1.pkg/Payload 
macOSUpd10.12.1.pkg/Payload: data
Run Code Online (Sandbox Code Playgroud)

通过使用xxd命令查看Payload文件的初始位,我可以看到文件类型pbzx

xxd macOSUpd10.12.1.pkg/Payload 


00000000: 7062 7a78 0000 0000 0100 0000 0000 0000  pbzx............
00000010: 0100 0000 0000 0000 0031 …
Run Code Online (Sandbox Code Playgroud)

macos lzma software-packaging xz macos-sierra

13
推荐指数
2
解决办法
1万
查看次数

7z和lzma压缩机有什么区别?

7-Zip声称使用LZMA作为压缩算法.但是,LZMA SDK附带了两个可执行文件,7zr.exe和lzma.exe,它们具有不同的选项/开关,并且产生不同的结果,这些结果是不可互换的,即使它们的大小很小.

所以问题是:这两个处理器之间有什么区别?

7zip lzma

12
推荐指数
1
解决办法
5580
查看次数

如何解压缩里面有多个文件夹/文件的.xz文件?

我正在尝试解压缩.xz文件,其中包含一些foders和文件.我没有看到使用lzma模块执行此操作的直接方法.这就是我所看到的解压缩方法:

In [1]: import lzma

In [2]: f = lzma.decompress("test.tar.xz")
---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-2-3b08bf488f9d> in <module>()
----> 1 f = lzma.decompress("test.tar.xz")

error: unknown file format
Run Code Online (Sandbox Code Playgroud)

是否还有其他方法可以解压缩此文件,以便创建生成的文件夹?

python lzma

12
推荐指数
1
解决办法
9984
查看次数

LZMA压缩方法如何工作?

我需要了解有关LZMA压缩算法的详细信息.我知道它的一般概念,但我需要一些例子来详细解释它.有人可以帮我获取更多信息吗?

谢谢.

algorithm lzma

10
推荐指数
1
解决办法
1万
查看次数

标签 统计

lzma ×10

7zip ×5

compression ×4

c# ×3

xz ×2

algorithm ×1

c++ ×1

java ×1

macos ×1

macos-sierra ×1

performance ×1

python ×1

qt ×1

sdk ×1

software-packaging ×1

zip ×1