我有大约20个文件,每个文件的简短说明从第7行开始,转到了文件的最后一行。例如,一个文件的描述始于第7行,并在第10行结束,但是该文件共有13行。
如何仅导入描述,例如第7-10行?这是我到目前为止的示例代码。
Public Class Form1
Dim MyDir As String = "..GoodFils"
Dim MyFiles() As String = IO.Directory.GetFiles(MyDir)
Dim Count As Integer = 0
Public Function ReadLine(lineNumber As Integer, lines As List(Of String)) As String
Return lines(lineNumber - 1)
End Function
Private Sub btnDo_Click(sender As Object, e As EventArgs) Handles btnDo.Click
Dim reader As New System.IO.StreamReader(MyDir & "gucci.hcs")
Dim allLines As List(Of String) = New List(Of String)
Dim i As Integer
Dim strTemp As String
Do Until reader.EndOfStream = True
allLines.Add(reader.ReadLine())
Loop
lblName.Text = ReadLine(2, allLines)
lblPrice.Text = ReadLine(5, allLines)
lblDesc.Text = EOF(1) - 3
reader.Close()
FileOpen(1, MyDir & "gucci.hcs", OpenMode.Input) 'May be able to use MyDir & lblName & ".hcs"
For i = 7 To reader.EndOfStream
Input(1, strTemp)
Next
lblDesc.Text += i
FileClose(1)
End Sub
End Class
您可以使用io.file.file.readalllines将每个单独文件的内容加载到数组中,然后您可以使用linq跳过以跳到第7行,然后拿到第三名到最后一行。
这是一个快速示例:
'Create a collection to store all of the file's descriptions
Dim descriptions As New List(Of String)
'Placeholder variable for the upcoming iteration
Dim lines() As String
'Iterate through each file
For Each file As IO.FileInfo In New IO.DirectoryInfo("GoodFils").GetFiles("*.txt")
'Read the file
lines = IO.File.ReadAllLines(file.FullName)
'Get only lines 7 to n-3
descriptions.Add(String.Join(Environment.NewLine, lines.Skip(6).Take(lines.Count - 10).ToArray()))
Next
小提琴:实时演示