C # .NET StreamWriter: как пропустить строки при записи файла с помощью StreamWriter? - PullRequest
3 голосов
/ 18 августа 2011

Я читаю в текстовом файле, используя StreamReader.Я хочу записать этот же текстовый файл, КРОМЕ его первых 4-х строк и последних 6-ти строк.Спасибо.

Ответы [ 4 ]

5 голосов
/ 18 августа 2011
string[] fileLines = File.ReadAllLines(@"your file path"); 

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

File.WriteAllLines(@"your output file path", result);
3 голосов
/ 18 августа 2011

Кажется, это не самый короткий путь ... но он работает для меня ... Надеюсь, он даст некоторое представление.

        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();
1 голос
/ 18 августа 2011

StreamReader.ReadLine() читает файл построчно, и вы можете создать массив строк из файла. Затем удалите первые четыре и последние 6 строк из массива. А с StreamWriter.WriteLine() вы можете заполнять новый файл строка за строкой, беря из вашего массива. Должно быть довольно просто.

0 голосов
/ 22 марта 2013

Вот самый простой способ сделать это в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...