为每个空行创建带有字符串的行,直到到达第 100 行

create lines with strings for each blank line until it reaches line 100

我是 C# 的新手,我需要有关读取当前有 7 行文本的文件的帮助,但我需要它在这 7 行之后写入 "Line PlaceHolder",直到到达文本文件中的第 100 行。这是我到目前为止所拥有的,我知道这是我失败的尝试:编辑:这很好,但唯一的问题是抛出一个异常,一个进程已经在使用文本文件,我如何解决这个问题 read/write 该文件同时??

  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);
        }
    }

看起来你只是缺少一个 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);
        }
    }

您可以先使用 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);
}

如果您不介意以 Read/Write

方式打开文件,这可能会起作用
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();
}