標準出力と標準入力と出力を圧縮する7 - ジップを使用することができませんか?

StackOverflow https://stackoverflow.com/questions/1287383

  •  18-09-2019
  •  | 
  •  

質問

私はエラーが "実装されていません" を取得ます。

私は、取る標準入力経由 7 - ジップを使用してファイルを圧縮したいです標準出力を介してデータと自分のアプリケーションでより多くの変換を行います。それは、この例を示しの manページでます:

%エコーのfoo | 7zのダミー-tgzip -Si -SO>は/ dev / nullにする

私はWindowsとC#を使用しています。

結果:

7-Zip 4.65  Copyright (c) 1999-2009 Igor Pavlov  2009-02-03
Creating archive StdOut

System error:
Not implemented

コード:

public static byte[] a7zipBuf(byte[] b)
{
    string line;
    var p = new Process();
    line = string.Format("a dummy -t7z -si -so ");
    p.StartInfo.Arguments = line;
    p.StartInfo.FileName = @"C:\Program Files\7-Zip\7z.exe";
    p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.RedirectStandardError = true;
    p.StartInfo.RedirectStandardInput = true;

    p.Start();

    p.StandardInput.BaseStream.Write(b, 0, b.Length);
    p.StandardInput.Close();
    Console.Write(p.StandardError.ReadToEnd());
    //Console.Write(p.StandardOutput.ReadToEnd());

    return p.StandardOutput.BaseStream.ReadFully();
}

ファイルをメモリに読み込むためのもう一つの簡単な方法はありますか?

2)使用)ファイルパイプを(媒体が?私はそれをやったことがない)3)何か他のものです。

今、私は、1)一時ファイルに書き込むことができますし、(簡単に読んで、いくつかのコードをコピー/ペーストすることができます

他のヒント

ここでについてのスレッドでイゴールパブロフ(7Zの作者)、からいくつかの情報です"GZIP / bzip2のためのドロップイン置換として7zipを?"

の提案は、基本的にxz代用として7Zを使用することでした。ただ、xzを使用して動作するはずですが、それはマルチスレッドではないかもしれない(と7Zがよい)。

のように7Zを使用しようとしているときます:

somecommand | 7zr a -si -so | nc -q 2 1.2.3.4 5678

イゴールパブロフはに述べています:

  

7zのA a.7z -SO
  そして、
  7zの電子a.7z -si
  implemetedすることはできません。 .7z形式は、必要とするので、   操作を "シーク" ます。

     

の代わりにXZ形式を使用します。
  7Z a.xzファイル
  それはすべてのモードをサポートしている必要があります。

とする

  

7-Zipは、アーカイブの名前を必要とすることを考えている。
  だから、いくつかを指定することができます   a.xz
のようなアーカイブ名   または
  -anスイッチを指定します。

最終的なソリューションでした。

cat foo.txt | 7za a -an -txz -bd -si -so | dd of=foo.xz
<時間>

バグレポートには、これは助けにする必要があります示唆ます:

  

のみXZ、LZMA、タール、gzipとbzip2のアーカイブのための標準入力、および標準入力からファイルを追加することから、アーカイブの7 - ジップ支援読書の現在のバージョンだけのため7Z、XZ、gzipとbzip2のアーカイブます。

あなたは 7zのダウンロードページの「コマンドラインバージョン」である、7za.exeを使用する必要がありますに。私はあなたが現在7z.exeを使用していることがわかり、私はそれは私も前に遭遇した問題だと確信しています。


実は、私はので、7zのは、私を与えていたトラブルの PeaZipするに切り替えると思います。 PeaZipが7zや他のいくつかの圧縮ユーティリティのラッパーで、PeaZipは少し良く、コマンド・ライン・インタフェースを備えています。

stdout7zip配管時に

私は同様の問題に遭遇した。

の代わりに直接Processからコマンドを呼び出すのは、私はバッチファイルにコマンドを記述して、バッチファイルを実行します。それはハックですが、それは作業を行います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top