StreamReader在读取文件时抛出System.IO.FileInfo []异常

时间:2017-05-22 08:56:37

标签: .net vb.net streamreader

每次尝试使用StreamReader读取文件时,都会抛出以下异常:

  

无法找到System.IO.FileInfo []。

这是我的代码:

Dim dinfo As New DirectoryInfo(TextBox1.Text)

Dim files As FileInfo() = dinfo.GetFiles("*.txt", SearchOption.AllDirectories)

Dim sr = New StreamReader(TextBox1.Text & "/" & dinfo.GetFiles.ToString)

此外,在我的代码中,我有这个样本,我不知道它是否相关,但以防万一:

Dim dinfo As New DirectoryInfo(TextBox1.Text)

Dim files As FileInfo() = dinfo.GetFiles("*.txt", SearchOption.AllDirectories)

ListBox1.Items.Clear()
For Each file As FileInfo In files
    ListBox1.Items.Add(file.Name)
 Next

我正在尝试将所有找到的.txt文件传递给StreamReader,以便StreamReader可以逐个读取所有找到的.txt文件。

2 个答案:

答案 0 :(得分:1)

你不能那样使用dinfo.GetFiles.ToString。当StreamReader期待路径或流时,这将返回System.IO.FileInfo[]。我认为在这种情况下是一条路径。

另外,考虑使用Path.Combine,而不是将字符串连接在一起以建立路径。虽然最后我认为你不会真的需要这个但是值得一读。

我还会考虑在使用StreamReader时实施Using

  

有时,您的代码需要非托管资源,例如文件句柄,COM包装器或SQL连接。使用块可确保在代码完成后处理一个或多个此类资源。这使得它们可供其他代码使用。

根据你的评论,我认为你所追求的是这样的:

Dim dinfo As New DirectoryInfo(TextBox1.Text)
For Each f In dinfo.GetFiles("*.txt", SearchOption.AllDirectories)
    Using sr As New StreamReader(f.FullName)
        While Not sr.EndOfStream
            Debug.WriteLine(sr.ReadLine())
        End While
    End Using
Next

答案 1 :(得分:0)

问题非常简单,如果我没有弄错的原因是您将数组传递给#Task 2 name_list = [] count = 0 name = "empty" while count < 45: name == raw_input("Enter the student's name") name_list.append(name) count = count + 1 print "List full" # Where do I go from here? ,但StreamReader一次只能读取一个文件。< / p>

我在这里介绍的是使用ListBox方法,但这不是推荐版本。

将所有* .txt文件添加到列表框:

StreamReader

然后sub逐个读取所有* .txt:

Public Sub AddToList(ByVal pather As String)
    Dim Names As String() = Directory.GetFiles(pather, "*.txt", SearchOption.AllDirectories)
    ' Display all files.
    For Each name As String In Names
        ListBox1.Items.Add(name)
    Next
End Sub

更好的方法是在我们浏览文件时直接阅读:

Public Sub ReadAllTxt()
    For Each item In ListBox1.Items
        Console.Write(File.ReadAllText(item))
    Next
End Sub