C# 代码不会在输出文件中打印整个数据

C# 代码不会在输出文件中打印整个数据,c#,.net,xz,C#,.net,Xz,当我运行此代码时: static void Main(string[] args) { var currentDirectory = Directory.GetCurrentDirectory(); var searchDirectory = new DirectoryInfo(currentDirectory); var queryMatchingFiles = from file in searchDi

当我运行此代码时:

static void Main(string[] args)
    {
        var currentDirectory = Directory.GetCurrentDirectory();
        var searchDirectory = new DirectoryInfo(currentDirectory);

        var queryMatchingFiles =
                from file in searchDirectory.GetFiles()
                let fileContent = System.IO.File.ReadAllText(file.Name)
                select file.Name;

        StreamWriter outputCacheMeta = new StreamWriter(@"output.txt");

        foreach (var fileName in queryMatchingFiles.Where(fileName => !fileName.EndsWith(".txt") && !fileName.EndsWith(".exe") && !fileName.EndsWith(".xz")))
        {
            // start the converion utility
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.FileName = "xz.exe";
            startInfo.Arguments = "-k -z " + fileName;
            startInfo.CreateNoWindow = true;
            startInfo.WindowStyle = ProcessWindowStyle.Hidden;

            using (Process p = Process.Start(startInfo))
            {
                while (!p.HasExited)
                {
                    Thread.Sleep(300);
                }
            }

            //Process.Start(startInfo);

            Console.WriteLine(string.Format("Compressing file: '{0}'", fileName.ToString()));

            // generate final string
            FileInfo inFile = new FileInfo(fileName);
            FileInfo outFile = new FileInfo(fileName + ".xz");

            outputCacheMeta.WriteLine("<ContentFile Name=\"" + fileName.ToString() + "\" Size=\"" + inFile.Length.ToString() + "\" SHA1Hash=\"" + HashCalc.GetSHA1Hash(fileName).ToString() + "\" CompressedSize=\"" + outFile.Length.ToString() + "\" />");
            //Console.WriteLine(string.Format(("<ContentFile Name=\"" + fileName.ToString() + "\" Size=\"" + inFile.Length.ToString() + "\" SHA1Hash=\"" + HashCalc.GetSHA1Hash(fileName).ToString() + "\" CompressedSize=\"" + outFile.Length.ToString() + "\" />")));
        }
    }
static void Main(字符串[]args)
{
var currentDirectory=Directory.GetCurrentDirectory();
var searchDirectory=newdirectoryinfo(currentDirectory);
变量queryMatchingFiles=
来自searchDirectory.GetFiles()中的文件
让fileContent=System.IO.File.ReadAllText(File.Name)
选择文件名;
StreamWriter outputCacheMeta=新的StreamWriter(@“output.txt”);
foreach(queryMatchingFiles.Where(fileName=>!fileName.EndsWith(“.txt”)&&&!fileName.EndsWith(“.exe”)&&!fileName.EndsWith(“.xz”))
{
//启动converion实用程序
ProcessStartInfo startInfo=新的ProcessStartInfo();
startInfo.FileName=“xz.exe”;
startInfo.Arguments=“-k-z”+文件名;
startInfo.CreateNoWindow=true;
startInfo.WindowStyle=ProcessWindowStyle.Hidden;
使用(进程p=Process.Start(startInfo))
{
当(!p.hasExit)退出时
{
睡眠(300);
}
}
//进程启动(startInfo);
WriteLine(string.Format(“压缩文件:{0}',fileName.ToString());
//生成最终字符串
FileInfo infle=新的FileInfo(文件名);
FileInfo outFile=新的FileInfo(fileName+“.xz”);
outputCacheMeta.WriteLine(“”);
//Console.WriteLine(string.Format((“”));
}
}
它不会打印输出文件(output.txt)中的所有内容,而是打印以下内容:(对不起,外部链接)

问题是它突然“停止”写入输出文件


谢谢

在程序退出之前,您不能
Flush()
ing或
Close()
ing您的
StreamWriter
。您的一些文件数据将被缓冲以写入文件,但在刷新并关闭流之前不会被写入。

添加outputCacheMeta.flush();在foreach循环的末尾(但在内部),您是否调试并逐步检查了代码,以查看是什么阻止了它?patch_survival.ff有多大?