2013-12-11 29 views
0

我正在下载ftp中的所有文件到我的本地文件夹。所有文件都应该在ftp下载到本地驱动器后删除。使用c#将ftp文件列表下载到本地文件夹?

从下面的代码

  1. 我只能下载从FTP一个文件,其中我没有料到

  2. 我需要把一个文件夹中,但不是在本地的名称中的所有文件文件名。

我的代码:

using (WebClient ftpClient = new WebClient()) 
{ 
    ftpClient.Credentials = new System.Net.NetworkCredential("ftpusername", "ftp pass"); 
    ftpClient.DownloadFile("ftp://ftpdetails.com/dec.docx",@"D:\\Mainfolder\test.docx"); 
} 

从上面的代码,我可以下载一个文件,并将其放置在文件名only..Where我有这么多的文件,从ftp和地方下载它在一个本地文件夹..任何建议非常感谢。

+0

请参阅[如何在C#中使用FTP列出目录内容?](http://stackoverflow.com/questions/3298922/how-to-list-directory-contents-with-ftp-in-c)。 – CodeCaster

+0

你的问题太广泛了,你不能解释你遇到什么问题。您想要1)列出FTP目录内容和列表中的每个文件:2)下载,3)本地写入,4)从FTP中删除。看到我作为步骤1的副本链接的问题,您必须能够从那里找出其余部分。 – CodeCaster

回答

4

下面是一个使用FTPWebResponse从目录中获取文件名列表的例子:

using System; 
using System.IO; 
using System.Net; 
using System.Text; 

namespace Examples.System.Net 
{ 
    public class WebRequestGetExample 
    { 
     public static void Main() 
     { 
      // Get the object used to communicate with the server. 
      FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.funet.fi/pub/standards/RFC/"); 
      request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 

      // This example assumes the FTP site uses anonymous logon. 
      request.Credentials = new NetworkCredential("anonymous", "[email protected]"); 

      FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 

      Stream responseStream = response.GetResponseStream(); 
      StreamReader reader = new StreamReader(responseStream); 

      while (!reader.EndOfStream) 
      { 
       String filename = reader.ReadLine(); 
       Console.WriteLine(filename); 
       //you now have the file name, you can use it to download this specific file 


      } 

      Console.WriteLine("Directory List Complete, status {0}", response.StatusDescription); 

      reader.Close(); 
      response.Close(); 
     } 
    } 
} 

然后,您可以使用该列表下载每个文件。请注意,如果您需要下载大量文件,则可能需要查看asyncronous downloading以加快速度 - 但在尝试实施任何异步内容之前,我会首先执行此操作。

+1

请注意,“WebRequestMethods.Ftp.ListDirectoryDe​​tails”还会返回文件的日期和大小。使用“WebRequestMethods.Ftp.ListDirectory”,你只需要收到文件名,所以不需要解析它:-) –

+0

Paul,你可以举一个如何使用这个列表下载文件的例子吗? – dragy

1

我不认为WebClient是一个有效的FTP客户端。 改为使用标准类FtpWebRequestFtpWebResponse

否则有几个免费的C#ftp客户端可以完成这项工作。

相关问题