阅读具体行

时间:2012-06-25 19:44:50

标签: vb.net

我想从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行

任何帮助都将不胜感激。

2 个答案:

答案 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)

看起来您正在传递文件的内容而不是文件的路径。

查看用于调用此函数的代码而不是此函数本身会很有用。