簡體   English   中英

StreamWriter.WriteLine 方法切斷下一行

[英]StreamWriter.WriteLine method cuts off next line

我正在嘗試使用 stream 閱讀器逐行通過文本文件 go ,當我遇到特定文本時,我想在該文件中添加一個新行。 但是當我這樣做時,下一行的第一部分(大約一半)被切斷了。 我只想這樣做一次,這就是為什么存在“跳過”變量的原因。 這是我正在做的事情:

                var fileStream = new FileStream(fileName, FileMode.Open);
                var writer = new StreamWriter(fileStream);
                var reader = new StreamReader(fileName);
                string line;
                var skip = false;
                using (writer) {
                    using (reader) {
                        while ((line = reader.ReadLine()) != null) {
                            if (line.Contains("some text") && !skip) {
                                writer.WriteLine("some text something else");
                                skip = true;
                            }
                        }
                    }
                }
                fileStream.Close();

我在這里做錯了嗎?

編輯:啊,我剛剛看到您正在嘗試讀取和寫入同一個文件。

您不應該這樣做 - 它正在替換現有文本,而不是插入額外的數據。 不能只在文件中插入數據——這不是文件系統的工作方式。

相反,從一個文件讀取,寫入另一個文件,然后根據需要移動文件。

我還建議您對變量的整個 scope using語句,而不是像這里那樣使用它們。 像這樣的東西:

void CopyAndEdit(string inputFile, string outputFile)
{
    // In .NET 4 you can use File.ReadLines which will
    // return an IEnumerable<string>
    using (TextReader reader = File.OpenText(inputFile))
    {
        using (TextWriter writer = File.CreateText(outputFile))
        {
            bool editing = true;
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                writer.WriteLine(line);
                if (editing && line.Contains("some text"))
                {
                    editing = false;
                    writer.WriteLine("some text something else");
                }
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM