C#.NET StreamWriter:如何使用StreamWriter编写文件时跳过行?

时间:2011-08-18 02:29:23

标签: c# .net file-io streamreader streamwriter

我使用StreamReader读取了一个文本文件。 我想写出这个相同的文本文件,除了它的前4行和最后6行。

我该怎么做?感谢。

4 个答案:

答案 0 :(得分:5)

string[] fileLines = File.ReadAllLines(@"your file path"); 

var result = fileLines.Skip(4).Take(fileLines.Length - (4 + 6));

File.WriteAllLines(@"your output file path", result);

答案 1 :(得分:3)

似乎不是最短的方式......但它对我有用...希望它能提供一些见解。

        System.IO.StreamReader input = new System.IO.StreamReader(@"originalFile.txt");
        System.IO.StreamWriter output = new System.IO.StreamWriter(@"outputFile.txt");

        String[] allLines = input.ReadToEnd().Split("\n".ToCharArray());

        int numOfLines = allLines.Length;
        int lastLineWeWant = numOfLines - (6);                  //The last index we want. 

        for (int x = 0; x < numOfLines; x++)
        {
            if (x > 4 - 1 && x < lastLineWeWant)  //Index has to be greater than num to skip @ start and below the total length - num to skip at end.
            {
                output.WriteLine(allLines[x].Trim());  //Trim to remove any \r characters.
            }
        }

        input.Close();
        output.Close();

答案 2 :(得分:1)

StreamReader.ReadLine()逐行读取文件,您可以从文件中构建一个字符串数组。然后从数组中删除前四行和后六行。 使用StreamWriter.WriteLine(),您可以逐行填充新文件。应该很简单。

答案 3 :(得分:0)

这是在VB.NET中最简单的方法:

Private Sub ReplaceString()
    Dim AllLines() As String = File.ReadAllLines("c:\test\myfile.txt")
    For i As Integer = 0 To AllLines.Length - 1
        If AllLines(i).Contains("foo") Then
            AllLines(i) = AllLines(i).Replace("foo", "boo")
        End If
    Next
    File.WriteAllLines("c:\test\myfile.txt", AllLines)
End Sub