从FTP服务器端下载PCD点云文件到本地文件夹

  关于从ftp服务器下载文件到本地文件夹的操作,具体代码如下:

 1         /// <summary>
 2         /// 从服务器下载PCD点云文件到本地
 3         /// </summary>
 4         public void DownloadPCDFile()
 5         {
 6             //登入到ftp的账号
 7             string ftpUserName = "administrator";
 8             //登入到ftp的密码
 9             string ftpUserPwd = "beris.ZDH";
10             //下载后的文件存放路径
11             string downloadUrl = "D:\\PointClouds";
12             //需要下载的文件名
13             string fileName = "materialPile_downsample.pcd";
14             //需要现在的文件在ftp上的完整路径
15             string fileUploadPath = "ftp://192.168.2.43/LatestPCLFile";
16             Uri uri = new Uri(fileUploadPath + "/" + fileName);
17             //下载后存放的路径
18             string FileName = Path.GetFullPath(downloadUrl) + Path.DirectorySeparatorChar.ToString() + Path.GetFileName(uri.LocalPath);
19 
20             //创建文件流
21             FileStream fs = null;
22             Stream responseStream = null;
23             try
24             {
25                 //创建一个与FTP服务器联系的FtpWebRequest对象
26                 FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
27                 //设置请求的方法是FTP文件下载
28                 request.Method = WebRequestMethods.Ftp.DownloadFile;
29                 //连接登录FTP服务器
30                 request.Credentials = new NetworkCredential(ftpUserName, ftpUserPwd);
31                 //获取一个请求响应对象
32                 FtpWebResponse response = (FtpWebResponse)request.GetResponse();
33                 //获取请求的响应流
34                 responseStream = response.GetResponseStream();
35                 //判断本地文件是否存在,如果存在,则打开和重写本地文件
36                 if (File.Exists(FileName))
37                 {
38                     fs = File.Open(FileName, FileMode.Open, FileAccess.ReadWrite);
39                 }
40                 else
41                 {
42                     fs = File.Create(FileName);
43                 }
44 
45                 if (fs != null)
46                 {
47                     int buffer_count = 65536;
48                     byte[] buffer = new byte[buffer_count];
49                     int size = 0;
50                     while ((size = responseStream.Read(buffer, 0, buffer_count)) > 0)
51                     {
52                         fs.Write(buffer, 0, size);
53                     }
54                     fs.Flush();
55                     fs.Close();
56                     responseStream.Close();
57                 }
58             }
59             finally
60             {
61                 if (fs != null)
62                 {
63                     fs.Close();
64                 }
65                 if (responseStream != null)
66                 {
67                     responseStream.Close();
68                 }
69             }
70         }

 

posted @ 2021-04-12 14:02  Hurry_2021  阅读(672)  评论(0)    收藏  举报