-1

我想从 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(String path) 在 System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost) 在 System.IO.StreamReader..ctor(String path) 在 C:\Users\Optimus\documents\visual studio 2012\Projects\WindowsApplication1\WindowsApplication1\Form1 中的 WindowsApplication1.Form1.ReadSpecifiedLine(String file, Int32 lineNum)。 VB:第 48 行

任何帮助,将不胜感激。

4

2 回答 2

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
于 2012-06-25T20:10:00.047 回答
0

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

看看你用来调用这个函数的代码而不是这个函数本身会很有用。

于 2012-06-25T19:55:25.117 回答