C#Streamreader编写器(内存问题)

0 c#

我有几个数百万字的文本文件位于目录中,我想逐行阅读并将"|"替换为"\",然后将该行写出到新文件.这段代码可能工作正常,但我没有看到任何结果文本文件,或者它可能是我只是不耐烦.

{
        string startingdir = @"K:\qload";
        string dest = @"K:\D\ho\jlg\load\dest";
        string[] files = Directory.GetFiles(startingdir, "*.txt");

        foreach (string file in files)
        {
            StringBuilder sb = new StringBuilder();
            using (FileStream fs = new FileStream(file, FileMode.Open))
            using (StreamReader rdr = new StreamReader(fs))
            {
                while (!rdr.EndOfStream)
                {
                    string begdocfile = rdr.ReadLine();
                    string replacementwork = docfile.Replace("|", "\\");
                    sb.AppendLine(replacementwork);
                    FileInfo file_info = new FileInfo(file);
                    string outputfilename = file_info.Name;
                    using (FileStream fs2 = new FileStream(dest + outputfilename, FileMode.Append))
                    using (StreamWriter writer = new StreamWriter(fs2))
                    {
                        writer.WriteLine(replacementwork);
                    }
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

DUHHHHH感谢大家.

Id10t错误.

dtb*_*dtb 7

摆脱StringBuilder,不要为每一行重新打开输出文件:

string startingdir = @"K:\qload";
string dest = @"K:\D\ho\jlg\load\dest";
string[] files = Directory.GetFiles(startingdir, "*.txt");

foreach (string file in files)
{
    var outfile = Path.Combine(dest, Path.GetFileName(file));

    using (StreamReader reader = new StreamReader(file))
    using (StreamWriter writer = new StreamWriter(outfile))
    {
        string line = reader.ReadLine();
        while (line != null)
        {
            writer.WriteLine(line.Replace("|", "\\"));
            line = reader.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)