将特定行从一个文本文件提取到其他文本文件

时间:2012-08-14 06:13:28

标签: vb.net

我想从文本文件中提取一些特定的行到其他文本文件。我使用以下代码

    Imports System.IO



Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim Tr As IO.TextReader = System.IO.File.OpenText("C:\Assignment.txt")
        For c As Integer = 1 To 10

            If c = 7 Then
                Dim MyFileLine As String = Split(Tr.ReadToEnd(), vbCrLf)(c) & vbCrLf
                Tr.Close()



                Dim TW As System.IO.TextWriter
                'Create a Text file and load it into the TextWriter 
                TW = System.IO.File.CreateText("C:\Assignment1.txt")
                TW.WriteLine(MyFileLine)
                'Flush the text to the file 
                TW.Flush()
                'Close the File 
                TW.Close()
            End If

        Next c
    End Sub
End Class

但是这段代码只提取了第7行,我想要提取第8,9,10,14,15,16行。请指导我正确的解决方案。提前谢谢你。

1 个答案:

答案 0 :(得分:1)

这里似乎有几个问题。我会更正它们,然后在下面解释:

Imports System.IO

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim currentLine As String
        Dim lineCounter As Integer = 1
        Dim lineNumbersRequired As List(Of Integer) = New List(Of Integer)
        lineNumbersRequired.Add(7)
        lineNumbersRequired.Add(8)
        lineNumbersRequired.Add(9)
        lineNumbersRequired.Add(10)
        lineNumbersRequired.Add(14)
        lineNumbersRequired.Add(15)
        lineNumbersRequired.Add(16)

        Dim TW As System.IO.TextWriter
        'Create a Text file and load it into the TextWriter 
        TW = System.IO.File.CreateText("C:\Assignment1.txt")

        Using Tr As IO.TextReader = New IO.StreamReader("C:\Assignment.txt")
            While Not Tr.EndOfStream
                If lineNumbersRequired.Contains(lineCounter) Then
                    Dim MyFileLine As String = Split(currentLine, vbCrLf)(c) & vbCrLf
                    TW.WriteLine(MyFileLine)
                End If
                lineCounter = lineCounter + 1
            End While
        End Using

        TW.Flush()
        'Close the File 
        TW.Close()

    End Sub
End Class

注意:代码未经过测试,但如果您遇到一些编译错误,应该非常接近!

那么,请快速了解我在这里所做的事情:

  1. 将For循环更改为一段时间,因为for循环从1到10运行,所以即使它有效,那么你也永远不会读过你文件中的第10行。所以我把它改成了一个while循环,它将在TextReader读取文件中的所有行时结束。此外,从文件读取的当前行已添加到名为currentLine的新变量中。
  2. 新的currentLine变量现在用于填充您的书写文件的行。
  3. 我添加了一个整数列表,它将保存你想要保留的行号,然后在while循环中我有一个计数器,它在处理每行时计算,如果这个计数器在行号列表中你想要保存到输出文件中,然后输出当前行。
  4. 让我知道你是如何继续下去的,如果你需要更多的解释,那么请问。