2012-08-14 83 views
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日,行也。請指導我正確的解決方案。提前感謝你。

回答

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循環進入一段時間,因爲你有運行從1到10,所以即使它的工作,然後循環你將永遠不會讀過文件中的第10行。所以我將它改爲while循環,當TextReader讀取文件中的所有行時,while循環將結束。此外,從文件讀取的當前行已添加到名爲currentLine的新變量。
  2. 新的currentLine變量現在用於填充寫入文件的行。
  3. 我已經添加了一個整數列表來存放你想要保留的行號,然後在while循環中,我有一個計數器在處理每一行時進行計數,如果這個計數器在行號列表中想要保存到你的輸出文件中,那麼它會輸出當前行。

讓我知道你如何繼續下去,如果你需要更多的解釋,那麼請問。

+0

有一個錯誤....雖然不是(currentLine = Tr.ReadLine())沒有什麼 – 2012-08-14 10:14:27

+0

我已經改變了代碼,並實施了'使用'語句清除'TextReader'之後。對不起,錯誤,我從C#轉換! – XN16 2012-08-14 10:47:22

+0

好吧讓我現在到另一個問題,,,如果我想從某個HTML頁面複製某些行,那麼我應該寫什麼代碼? – 2012-08-15 03:14:06

相關問題