在ListView中列出FTP文件夹中的文件?

时间:2009-11-02 17:58:26

标签: c# vb.net

我正在试图弄清楚如何在列表视图中列出FTP文件夹的所有文件,但我无法弄清楚如何执行此操作。我尝试使用相同的方法,就像我要列出我的硬盘中的文件夹的内容。但这失败了。

有什么想法吗?

我想到了这样的东西(在vb.net中,但我确信c#非常相似):

    Public Sub FTPFill()

    Dim ftpreq As FtpWebRequest = FtpWebRequest.Create("ftp://FTPRoot/")
    With ftpreq
        .Credentials = New NetworkCredential(My.Settings.FTPUsername, My.Settings.FTPPassword)
        .Method = WebRequestMethods.Ftp.ListDirectory
    End With

    Dim sr As New StreamReader(ftpreq.GetResponse().GetResponseStream())
    Dim str As String = sr.ReadLine()


    For Each str In sr.ReadLine()

        Dim lvi As New ListViewItem(sr.ReadLine())
        lvi.ImageIndex = 0
        lvi.SubItems.Add("Folder")
        lvi.SubItems.Add(Path.GetExtension((sr.ReadLine())))
        ListView.Items.Add(lvi)
    Next

End Sub

但是我不确定我在“For Each”循环中做了什么。

1 个答案:

答案 0 :(得分:2)

您似乎主要误解了使用 sr.ReadLine()时会发生什么。它实际上是一种“做东西”的方法,而不仅仅是下一行的属性。

每次使用它时,都会读取另一行响应流。现在你正在阅读一句话:

  1. 在循环开始时
  2. 新ListViewItem()
  3. 的构造函数中 Path.GetExtension((sr.ReadLine())))

    ......看起来你真的想在这里一次看一行。

    我建议您使用此FTP客户端作为指南,或者只是在项目中引用它... http://www.codeproject.com/KB/IP/FtpClient.aspx - 这样您就可以使用比响应字符串更直观的模型。< / p>

    另外,你在ForEach循环中所做的只是创建一个ListViewItem,并将它添加到ListView中。有很多教程要做这个(只是谷歌如何在VB.NET中使用ListView ),这里有一个让你入门:

    http://dotnetref.blogspot.com/2007/08/using-listview-in-vbnet.html

    希望这有帮助。