Получаю ошибку "Не реализовано".
Я хочу сжать файл с помощью 7-Zip через стандартный ввод, а затем взять данные через стандартный вывод и делать больше конверсий с моим приложением. На справочной странице показан следующий пример:
% echo foo | 7z манекен -tgzip -si -so > /dev/null
Я использую Windows и С#.
Полученные результаты:
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();
}
Есть ли другой простой способ прочитать файл в памяти?
Прямо сейчас я могу 1) писать во временный файл и читать (легко и могу копировать/вставлять некоторый код) 2) использовать файловый канал (средний? Я никогда этого не делал) 3) Что-то еще.