-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)at System.IO.Path.GetFileName(String path)at System.IO.StreamReader..ctor(String path、Encoding encoding、Boolean detectEncodingFromByteOrderMarks、Int32 bufferSize、Boolean checkHost)at System.IO.StreamReader..ctor(String path)at WindowsApplication1.Form1.ReadSpecifiedLine(String file、Int32 lineNum)in C:\ Users \ Optimus \ document \ visual studio 2012 \ Projects \ WindowsApplication1 \ WindowsApplication1\Form1。 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 に答える