使用 C# StreamWriter 写入文件

writing in a file using C# StreamWriter

我正在练习使用 c# 写入文件

我的代码不工作(写入文件未完成)

{
    int T, N; //T = testCase , N = number of dice in any Test
    int index = 0, straight;
    List<string> nDiceFaceValues = new List<string>(); //List for Dice Faces
    string line = null;  //string to read line from file
    string[] lineValues = {};  //array of string to split string line values

    string InputFilePath = @ "E:\Visual Studio 2017\CodeJam_Dice Straight\A-small-practice.in"; //path of input file
    string OuputFilePath = @
    "E:\Visual Studio 2017\CodeJam_Dice Straight\A-small-practice.out"; //path of otput file

    StreamReader InputFile = new StreamReader(InputFilePath);
    StreamWriter Outputfile = new StreamWriter(OuputFilePath);

    T = Int32.Parse(InputFile.ReadLine());  //test cases input
    Console.WriteLine("Test Cases : {0}", T);

    while (index < T) {
        N = Int32.Parse(InputFile.ReadLine());
        for (int i = 0; i < N; i++) {
            line = InputFile.ReadLine();
            lineValues = line.Split(' ');

            foreach(string j in lineValues)
            {
                nDiceFaceValues.Add(j);
            }
        }
        straight = ArrangeDiceINStraight(nDiceFaceValues);
        Console.WriteLine("case:  {0} , {1}", ++index, straight);

        Outputfile.WriteLine("case:  {0} , {1}", index, straight);
        nDiceFaceValues.Clear();
    }
}

这段代码有什么问题?

我该如何解决?

为什么它不起作用??

注意:我想逐行写入文件

缺少的是:关闭东西 - 刷新缓冲区等:

using(var outputfile = new StreamWriter(ouputFilePath)) {
    outputfile.WriteLine("case:  {0} , {1}", index, straight);
}

但是,如果您要为每一行都这样做,File.AppendText 可能更方便。

特别注意 new StreamWriter 默认情况下会 覆盖 ,因此您还需要考虑到这一点:

using(var outputfile = new StreamWriter(ouputFilePathm, true)) {
    outputfile.WriteLine("case:  {0} , {1}", index, straight);
}

这里的true是给append的。

如果您已经为并发 read/write 打开了一个文件,您也可以 尝试 只是添加 outputfile.Flush();,但是...不能保证做任何事情。