C# 以zip存档中的文件作为参数运行exe

C# 以zip存档中的文件作为参数运行exe,c#,.net,cmd,zip,C#,.net,Cmd,Zip,这似乎是一个非常具体的问题,我似乎找不到任何完全相关的解决方案(或者至少不知道要搜索什么) 所以,我有一个程序,可以打开嵌套的zip档案,并找到特定的文件。从这些文件类型中,我需要使用旧的C程序提取相关数据,我已将其编译为.exe并包含在项目中。但是,它是一个命令行程序,相对文件路径作为参数输入。在我的代码中,这些文件是以ByTestStreams的形式出现的,这是因为归档文件作为一个整体太大而无法提取 我似乎找不到任何线索来说明我将如何处理这些流,以便程序能够在不解包的情况下提取和获取它们。目

这似乎是一个非常具体的问题,我似乎找不到任何完全相关的解决方案(或者至少不知道要搜索什么)

所以,我有一个程序,可以打开嵌套的zip档案,并找到特定的文件。从这些文件类型中,我需要使用旧的C程序提取相关数据,我已将其编译为.exe并包含在项目中。但是,它是一个命令行程序,相对文件路径作为参数输入。在我的代码中,这些文件是以ByTestStreams的形式出现的,这是因为归档文件作为一个整体太大而无法提取

我似乎找不到任何线索来说明我将如何处理这些流,以便程序能够在不解包的情况下提取和获取它们。目前我的代码如下:

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();
    }
}

有什么方法可以完成我正在尝试的任务,或者我需要找到另一种方法吗?

因为旧的C程序需要从文件系统中读取,所以您必须在某个地方创建一个文件(可能使用System.IO.Path.GetRandomFileName?)并将该路径提供给程序


或者,重写旧的C程序以使用stdin,就像它是一个文件一样,尽管您可能会遇到编码问题,并且可能会遇到矛盾的“如何告诉它文件名?”提示:p

既然您可以拥有您的文件(甚至与bytestream一样),您是否尝试将bytestream写入临时文件,在参数中传递临时文件位置,工作完成后删除所有临时文件?或者这种方法不适合你?假设ByTestStream是扩展名为“.fileending”的所需文件……写入临时文件似乎无法实现不提取文件的目的,或者这里有什么不同?否则,在我看来,我可能只是提取到一个临时位置,这是我试图避免的。由于c程序是命令行,并且被编写为对给定路径的文件进行操作,因此无法按照当前编写的方式将流传递给它。我能看到的唯一选择是在你的c#程序中复制c程序的功能,经过修改,它可以直接在流上运行。似乎这里阻力最小的途径可能是简单地将流写入一个文件,然后使用它。谢谢你能把“旧的C程序”改成从标准输入读取吗?