7Zip CLI 使用 LZMA 压缩文件
7Zip CLI Compress file with LZMA
我尝试在控制台中使用 LZMA 压缩文件。
7z a -t7z output input
or
7z a -t7z -m0=lzma output input
但是客户端打不开
如何在控制台中将文件压缩为 LZMA 存档?
问题可能是上述命令在存档中添加了一个文件。但是,我想在没有文件结构的数据文件中压缩数据。
是否可以选择使用 LZMA 将数据文件压缩为压缩数据文件?
编辑
我看到反对票,这意味着这个问题在某种程度上“不正确”。
所以我将尝试解释我想要实现的目标。
我在服务器端压缩数据并在客户端应用程序上使用它们。我在 Node.js 中成功地做到了:
const lzma = require('lzma');
lzma.compress(inputBuffer, 1, callback);
function callback(data, err) {
writefile(outputPath, Buffer.from(data));
}
但是,速度很慢。所以我想调用7Zip进行压缩。
我的 .NET 服务器也以类似的方式压缩它。
byte[] barData;
using (var barStream = dukasDataHelper.SerializeLightBars(lightBars.ToArray()))
using (var zippedStream = zipLzma.Zip(barStream))
{
barData = zippedStream.ToArray();
}
我的问题是我无法在 CLI 中设置正确的选项以便能够读取客户端中的文件。
我的客户端代码 C# 是:
using (var blobStream = new MemoryStream(blobBytes))
using (var barStream = new ZipLzma().Unzip(blobStream))
{
SaveDataSet(barStream, localPath);
}
通过 CLI 压缩时出现此错误消息:
$exception {"Data Error"}
Data: {System.Collections.ListDictionaryInternal}
at SevenZipLzma.LZMA.Decoder.Code(Stream inStream, Stream outStream, Int64
inSize, Int64 outSize, ICodeProgress progress)
at SevenZipLzma.ZipLzma.Unzip(Stream stream)
由于代码在我使用 Node.js 压缩时有效,而在通过 CLI 压缩时无效,这意味着有问题。
7zip 生成文件和目录的存档,而 LZMA 生成单个压缩数据流。它们不是相同的格式。 LZMA 可用于 inside 7zip 存档以压缩条目(或 LZMA2 或 Deflate 或其他几种压缩方法)。
您可以尝试使用 xz
命令生成带有 xz --format=lzma
的 LZMA 流。
我尝试在控制台中使用 LZMA 压缩文件。
7z a -t7z output input
or
7z a -t7z -m0=lzma output input
但是客户端打不开
如何在控制台中将文件压缩为 LZMA 存档?
问题可能是上述命令在存档中添加了一个文件。但是,我想在没有文件结构的数据文件中压缩数据。
是否可以选择使用 LZMA 将数据文件压缩为压缩数据文件?
编辑
我看到反对票,这意味着这个问题在某种程度上“不正确”。
所以我将尝试解释我想要实现的目标。
我在服务器端压缩数据并在客户端应用程序上使用它们。我在 Node.js 中成功地做到了:
const lzma = require('lzma');
lzma.compress(inputBuffer, 1, callback);
function callback(data, err) {
writefile(outputPath, Buffer.from(data));
}
但是,速度很慢。所以我想调用7Zip进行压缩。
我的 .NET 服务器也以类似的方式压缩它。
byte[] barData;
using (var barStream = dukasDataHelper.SerializeLightBars(lightBars.ToArray()))
using (var zippedStream = zipLzma.Zip(barStream))
{
barData = zippedStream.ToArray();
}
我的问题是我无法在 CLI 中设置正确的选项以便能够读取客户端中的文件。
我的客户端代码 C# 是:
using (var blobStream = new MemoryStream(blobBytes))
using (var barStream = new ZipLzma().Unzip(blobStream))
{
SaveDataSet(barStream, localPath);
}
通过 CLI 压缩时出现此错误消息:
$exception {"Data Error"}
Data: {System.Collections.ListDictionaryInternal}
at SevenZipLzma.LZMA.Decoder.Code(Stream inStream, Stream outStream, Int64
inSize, Int64 outSize, ICodeProgress progress)
at SevenZipLzma.ZipLzma.Unzip(Stream stream)
由于代码在我使用 Node.js 压缩时有效,而在通过 CLI 压缩时无效,这意味着有问题。
7zip 生成文件和目录的存档,而 LZMA 生成单个压缩数据流。它们不是相同的格式。 LZMA 可用于 inside 7zip 存档以压缩条目(或 LZMA2 或 Deflate 或其他几种压缩方法)。
您可以尝试使用 xz
命令生成带有 xz --format=lzma
的 LZMA 流。