ftpHelper.cs 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace TrainVideoDataDispose
  9. {
  10. public class ftpHelper
  11. {
  12. /// <summary>
  13. /// 获取当前目录下文件夹
  14. /// </summary>
  15. /// <returns></returns>
  16. public static string[] GetFilesDirList()
  17. {
  18. try
  19. {
  20. List<string> result = new List<string>();//如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。
  21. List<string> result1 = new List<string>();//如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。
  22. FtpWebRequest ftp;
  23. ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://10.111.16.113"));//"ftp://10.12.12.9";
  24. ftp.Credentials = new NetworkCredential("300t", "300t");
  25. ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;//目录
  26. WebResponse response = ftp.GetResponse();//response为一个ftp的WebResponse
  27. StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);//读入responses所创建的数据流
  28. string line = reader.ReadLine();//输入流中的下一行;如果到达了输入流的末尾,则为空引用
  29. while (line != null)
  30. {
  31. result.Add(line);//)Append 方法可用来将文本或对象的字符串表示形式添加到由当前 StringBuilder 对象表示的字符串的结尾处。
  32. line = reader.ReadLine();
  33. //Download();
  34. }
  35. foreach (var item in result)
  36. {
  37. if (item.Contains(".txt"))
  38. {
  39. result1.Add(item);
  40. }
  41. }
  42. string path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "textFtp";
  43. string fileName = result1[0].Substring(result1[0].Length - 23);
  44. Download(path, fileName);
  45. reader.Close();
  46. response.Close();
  47. return result.ToString().Split('\n');
  48. }
  49. catch (Exception ex)
  50. {
  51. throw ex;
  52. }
  53. }
  54. /// <summary>
  55. /// 下载 filePath是下载到本机的地址fileName是需要下载的文件的名字
  56. /// </summary>
  57. public static void Download(string filePath, string fileName)
  58. {
  59. try
  60. {
  61. string path = filePath + "\\" + fileName;
  62. FileStream outputStream = new FileStream(path, FileMode.Create);
  63. FtpWebRequest reqFTP;
  64. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://10.111.16.113/" + fileName));
  65. reqFTP.Credentials = new NetworkCredential("300t", "300t");
  66. reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
  67. reqFTP.UseBinary = true;
  68. FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
  69. Stream ftpStream = response.GetResponseStream();
  70. long cl = response.ContentLength;
  71. int bufferSize = 2048;
  72. int readCount;
  73. byte[] buffer = new byte[bufferSize];
  74. readCount = ftpStream.Read(buffer, 0, bufferSize);
  75. while (readCount > 0)
  76. {
  77. outputStream.Write(buffer, 0, readCount);
  78. readCount = ftpStream.Read(buffer, 0, bufferSize);
  79. }
  80. ftpStream.Close();
  81. outputStream.Close();
  82. response.Close();
  83. }
  84. catch (Exception ex)
  85. {
  86. throw new Exception(ex.Message);
  87. }
  88. }
  89. }
  90. }