我正在使用下面的代码根据您在此处看到的逻辑将大文本文件分解为较小的文件。我在 File.WriteAllText 行上收到一个错误,说 tempfile 不存在。流程是一个标题记录,后面跟着多个报表数据行,后面跟着一个报表行的结尾,然后重新开始。有谁知道为什么我的临时文件不会在这里创建,我错过了什么?谢谢。

private static void SplitFile()
{
    StreamReader sr = new StreamReader($"{_processDir}{_processFile}");
    StreamWriter sw = null;
    string fileName = string.Empty;
    while (!sr.EndOfStream)
    {
        string line = sr.ReadLine();
        if (line.Split('\t')[0] == "FILEIDENTIFIER")
        {
            //line is a header record
            sw = new StreamWriter("{_processDir}tempfile.txt", false);
            sw.WriteLine(line);
        }
        else if (line.Contains("END OF\tREPORT"))
        {
            //line is end of report
            sw.Close();
            File.WriteAllText($"{_processDir}{fileName}.txt", File.ReadAllText($"{_processDir}tempfile.txt"));
        }
        else
        {
            //line is a report datarow
            fileName = line.Split('\t')[0];
            sw.WriteLine(line);
        }
    }
}

最佳答案

这段代码给你带来了问题:

 sw = new StreamWriter("{_processDir}tempfile.txt", false);

使用带有上述代码的字符串插值:
 sw = new StreamWriter($"{_processDir}tempfile.txt", false);

您可以检查流写入器写入数据的位置。

关于c# - 未创建 Streamwriter 文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39477800/

10-10 21:44
查看更多