相关疑难解决方法(0)

从Process.StandardOutput捕获二进制输出

在C#(在SuSE上以Mono 2.8运行的.NET 4.0)中,我想运行外部批处理命令并以二进制形式捕获其输出.我使用的外部工具称为"samtools"(samtools.sourceforge.net),除此之外,它还可以从名为BAM的索引二进制文件格式返回记录.

我使用Process.Start来运行外部命令,我知道我可以通过重定向Process.StandardOutput来捕获它的输出.问题是,这是一个带编码的文本流,所以它不允许我访问输出的原始字节.我找到的几乎可行的解决方案是访问底层流.

这是我的代码:

        Process cmdProcess = new Process();
        ProcessStartInfo cmdStartInfo = new ProcessStartInfo();
        cmdStartInfo.FileName = "samtools";

        cmdStartInfo.RedirectStandardError = true;
        cmdStartInfo.RedirectStandardOutput = true;
        cmdStartInfo.RedirectStandardInput = false;
        cmdStartInfo.UseShellExecute = false;
        cmdStartInfo.CreateNoWindow = true;

        cmdStartInfo.Arguments = "view -u " + BamFileName + " " + chromosome + ":" + start + "-" + end;

        cmdProcess.EnableRaisingEvents = true;
        cmdProcess.StartInfo = cmdStartInfo;
        cmdProcess.Start();

        // Prepare to read each alignment (binary)
        var br = new BinaryReader(cmdProcess.StandardOutput.BaseStream);

        while (!cmdProcess.StandardOutput.EndOfStream)
        {
            // Consume the initial, undocumented …
Run Code Online (Sandbox Code Playgroud)

c# binary process

24
推荐指数
2
解决办法
1万
查看次数

标签 统计

binary ×1

c# ×1

process ×1