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 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 行。请指导我正确的解决方案。提前谢谢你。

4

1 回答 1

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 循环中,我有一个计数器,它在处理每一行时对其进行计数,如果该计数器在您要保存的行号列表中到您的输出文件中,然后它将输出当前行。

让我知道你的进展情况,如果你需要更多的解释,请询问。

于 2012-08-14T08:03:52.170 回答