为每个空白行创建包含字符串的行,直到达到第100行

时间:2018-02-19 00:47:31

标签: c# file loops streamreader streamwriter

我是C#的新手我需要帮助才能阅读目前有7行文字的文件,但我需要在7行之后写“Line PlaceHolder”,直到它到达文本文件中的第100行。这是我到目前为止,我知道这是我失败的尝试:编辑:这是好的,但唯一的问题是一个例外是抛出一个进程已经在使用文本文件,我如何解决这个问题来读取/写入该文件同一时间??

  public void ReadFile()
    {
        if (File.Exists(AccountsFile))
        {
            using (StreamReader Reader = new StreamReader(AccountsFile))
            using (StreamWriter Writer = new StreamWriter((AccountsFile)))
            {
                for (int i = 0; i < 100; i++)
                {
                    string line;
                    if ((line = Reader.ReadLine()) == null)
                    {
                        Writer.WriteLine("Line Placeholder");

                    }
                }
            }
        }
        else
        {
            File.Create(AccountsFile);
        }
    }

3 个答案:

答案 0 :(得分:0)

您似乎错过了else

    public void ReadFile()
    {
        if (File.Exists(AccountsFile))
        {
            using (StreamReader Reader = new StreamReader(AccountsFile))
            using (StreamWriter Writer = new StreamWriter((AccountsFile)))
            {
                for (int i = 0; i < 100; i++)
                {
                    string line;
                    if ((line = Reader.ReadLine()) == null)
                    {
                        Writer.WriteLine("Line Placeholder");
                    }
                    else
                        Writer.WriteLine(line);
                }
            }
        }
        else
        {
            File.Create(AccountsFile);
        }
    }

答案 1 :(得分:0)

您可以先使用File.ReadAllLines将文件内容读入数组,获取数组.Length(表示文件中的行数),然后从100中减去该数字以查看有多少行你需要写。如果该数字大于零,则创建一个包含许多空行的List<string>,并使用File.AppendAllLines将这些行写入文件的末尾:

// See how many lines we need to add
var newLinesNeeded = 100 - File.ReadAllLines(AccountsFile).Length;

// Add them if needed
if (newLinesNeeded > 0)            
{
    // Create a list of empty lines
    var blankLines = new List<string>();
    for(int i = 0; i < newLinesNeeded; i++)
    {
        blankLines.Add("");
    }

    // Append them to our file
    File.AppendAllLines(AccountsFile, blankLines);
}

答案 2 :(得分:0)

如果您不介意将文件作为读/写

打开,这可能会有效
using (FileStream fileStream = File.Open(AccountsFile, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
    var streamWriter = new StreamWriter(fileStream);
    var streamReader = new StreamReader(fileStream);
    var i = 0;

    // read and count the lines
    while (streamReader.ReadLine() != null){
        i++;
    }

    // if any more lines are needed write them
    while (i++ < 100)
    {
        streamWriter.WriteLine("Line Placeholder");
    }
    streamWriter.Flush();
}