我想从html源代码中读取一个特定的行。 我将源存储到一个字符串文件中,我想读取X行。 所以我使用我在网上找到的这种方法
Public Shared Function ReadSpecifiedLine(file As String, lineNum As Integer) As String
Dim contents As String = String.Empty
Try
Using stream As New StreamReader(file)
contents = stream.ReadToEnd()
Dim linesArray As String() = contents.Split(New Char() {ControlChars.Lf})
If linesArray.Length > 1 Then
If Not lineNum > linesArray.Length AndAlso Not lineNum < 0 Then
Return linesArray(lineNum)
Else
Return linesArray(0)
End If
Else
Return contents
End If
End Using
Catch ex As Exception
Return ex.ToString()
End Try
End Function
例如我试图阅读第4行并且我得到了这个错误。
System.ArgumentException:路径中的非法字符。 在System.IO.Path.CheckInvalidPathChars(String path,Boolean checkAdditional) 在System.IO.Path.GetFileName(字符串路径) 在System.IO.StreamReader..ctor(String path,Encoding encoding,Boolean detectEncodingFromByteOrderMarks,Int32 bufferSize,Boolean checkHost) 在System.IO.StreamReader..ctor(String path) at WindowsApplication1.Form1.ReadSpecifiedLine(String file,Int32 lineNum)在C:\ Users \ Optimus \ documents \ visual studio 2012 \ Projects \ WindowsApplication1 \ WindowsApplication1 \ Form1.vb:第48行
任何帮助都将不胜感激。
答案 0 :(得分:1)
您发布的方法假定您正在传递文件路径。如果要将其更改为接受实际文件内容而不是文件路径,则可以通过删除流对象来简化方法:
Public Shared Function ReadSpecifiedLine(contents As String, lineNum As Integer) As String
Dim linesArray As String() = contents.Split(New Char() {ControlChars.Lf})
If linesArray.Length > 1 Then
If Not lineNum > linesArray.Length AndAlso Not lineNum < 0 Then
Return linesArray(lineNum)
Else
Return linesArray(0)
End If
Else
Return contents
End If
End Function
答案 1 :(得分:0)
看起来您正在传递文件的内容而不是文件的路径。
查看用于调用此函数的代码而不是此函数本身会很有用。