Запустите exe с файлами из zip-архива в качестве аргументов - PullRequest
0 голосов
/ 27 июня 2018

Кажется, это довольно специфическая проблема, и я не могу найти какие-либо полностью связанные решения (или, по крайней мере, не знаю, что искать).

Итак, у меня есть программа, которая открывает вложенные zip-архивы и находит определенные файлы. Из одного из этих типов файлов мне нужно извлечь соответствующие данные, используя старую программу на C, которую я скомпилировал в .exe и включил в проект. Однако это программа командной строки, в которой относительные пути к файлам вводятся в качестве аргументов. В моем коде файлы поступают в виде потоковых потоков из-за того, что архивы слишком большие для извлечения в целом.

Кажется, я не могу найти никаких подсказок относительно того, как мне поступить с этими потоками, чтобы программа могла извлекать их без распаковки. В настоящее время мой код выглядит следующим образом:

foreach (ZipArchiveEntry entry in archive.Entries)
{
    if (entry.FullName.EndsWith(".fileending", StringComparison.OrdinalIgnoreCase))
    {
        filePresent = true;
        Process p = new Process();
        p.StartInfo.FileName = "fileExtract.exe";
        p.StartInfo.Arguments = ?
        p.Start();
    }
}

Есть ли способ сделать то, что я пытаюсь, или мне нужно найти другой подход?

1 Ответ

0 голосов
/ 28 июня 2018

Поскольку старой программе на C нужно читать из файловой системы, вам нужно где-то создать файл (возможно, используйте System.IO.Path.GetRandomFileName?) И передать этот путь к программе.

В качестве альтернативы, переписать старую программу на C, чтобы использовать stdin, как если бы это был файл, хотя вы можете столкнуться с проблемами кодирования и, возможно, с противоречивым «как мне сказать это имя файла?» момент: P

...