|
|
@@ -14,16 +14,19 @@ namespace TrainVideoDataDispose
|
|
|
/// 获取当前目录下文件夹
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
- public static string[] GetFilesDirList()
|
|
|
+ public string[] GetFilesDirList()
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- List<string> result = new List<string>();//如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。
|
|
|
- List<string> resultTxt = new List<string>();//如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。
|
|
|
- List<string> resultJpg = new List<string>();//如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。
|
|
|
- List<string> resultMp4 = new List<string>();//如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。
|
|
|
+ ftpHelper ftp1 = new ftpHelper("10.111.16.113","", "300t", "300t");
|
|
|
+
|
|
|
+
|
|
|
+ List<string> result = new List<string>();
|
|
|
+ List<string> resultTxt = new List<string>();
|
|
|
+ List<string> resultJpg = new List<string>();
|
|
|
+ List<string> resultMp4 = new List<string>();
|
|
|
FtpWebRequest ftp;
|
|
|
- ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://10.111.16.113"));//"ftp://10.12.12.9";
|
|
|
+ ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://10.111.16.113"));
|
|
|
ftp.Credentials = new NetworkCredential("300t", "300t");
|
|
|
ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;//目录
|
|
|
WebResponse response = ftp.GetResponse();//response为一个ftp的WebResponse
|
|
|
@@ -74,18 +77,21 @@ namespace TrainVideoDataDispose
|
|
|
foreach (var item in resultTxt)
|
|
|
{
|
|
|
string fileName = item.Substring(item.Length - 23);
|
|
|
- Download(pathTxt, fileName);
|
|
|
- }
|
|
|
- //foreach (var item in resultMp4)
|
|
|
- //{
|
|
|
- // string fileName = item.Substring(item.Length - 23);
|
|
|
- // Download(pathMp4, fileName);
|
|
|
- //}
|
|
|
- //foreach (var item in resultJpg)
|
|
|
- //{
|
|
|
- // string fileName = item.Substring(item.Length - 26);
|
|
|
- // Download(pathImg, fileName);
|
|
|
- //}
|
|
|
+ ftp1.Download(pathTxt, fileName);
|
|
|
+ ftp1.MovieFile("/" + fileName, "deletes/txt/" + fileName);
|
|
|
+ }
|
|
|
+ foreach (var item in resultMp4)
|
|
|
+ {
|
|
|
+ string fileName = item.Substring(item.Length - 23);
|
|
|
+ ftp1.Download(pathMp4, fileName);
|
|
|
+ ftp1.MovieFile("/" + fileName, "deletes/movie/" + fileName);
|
|
|
+ }
|
|
|
+ foreach (var item in resultJpg)
|
|
|
+ {
|
|
|
+ string fileName = item.Substring(item.Length - 26);
|
|
|
+ ftp1.Download(pathImg, fileName);
|
|
|
+ ftp1.MovieFile("/" + fileName, "deletes/img/" + fileName);
|
|
|
+ }
|
|
|
reader.Close();
|
|
|
response.Close();
|
|
|
return result.ToString().Split('\n');
|
|
|
@@ -96,20 +102,81 @@ namespace TrainVideoDataDispose
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 下载 filePath是下载到本机的地址fileName是需要下载的文件的名字
|
|
|
+
|
|
|
+
|
|
|
+ string ftpServerIP; //10.111.16.113
|
|
|
+ string ftpRemotePath;
|
|
|
+ string ftpUserID; //300t
|
|
|
+ string ftpPassword; //300t
|
|
|
+ string ftpURI;
|
|
|
+ private string strFilePath = System.Environment.CurrentDirectory;//路径
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 连接FTP
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="FtpServerIP">FTP连接地址</param>
|
|
|
+ /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>
|
|
|
+ /// <param name="FtpUserID">用户名</param>
|
|
|
+ /// <param name="FtpPassword">密码</param>
|
|
|
+ public ftpHelper(string FtpServerIP, string FtpRemotePath, string FtpUserID, string FtpPassword)
|
|
|
+ {
|
|
|
+ ftpServerIP = FtpServerIP;
|
|
|
+ ftpRemotePath = FtpRemotePath;
|
|
|
+ ftpUserID = FtpUserID;
|
|
|
+ ftpPassword = FtpPassword;
|
|
|
+ ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 上传
|
|
|
/// </summary>
|
|
|
- public static void Download(string filePath, string fileName)
|
|
|
+ /// <param name="filename"></param>
|
|
|
+ public void Upload(string filename)
|
|
|
{
|
|
|
+ FileInfo fileInf = new FileInfo(filename);
|
|
|
+ string uri = ftpURI + fileInf.Name;
|
|
|
+ FtpWebRequest reqFTP;
|
|
|
+ reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
|
|
|
+ reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
|
|
|
+ reqFTP.KeepAlive = false;
|
|
|
+ reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
|
|
|
+ reqFTP.UseBinary = true;
|
|
|
+ reqFTP.ContentLength = fileInf.Length;
|
|
|
+ int buffLength = 2048;
|
|
|
+ byte[] buff = new byte[buffLength];
|
|
|
+ int contentLen;
|
|
|
+ FileStream fs = fileInf.OpenRead();
|
|
|
try
|
|
|
{
|
|
|
- string path = filePath + "\\" + fileName;
|
|
|
- FileStream outputStream = new FileStream(path, FileMode.Create);
|
|
|
- FtpWebRequest reqFTP;
|
|
|
- reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://10.111.16.113/" + fileName));
|
|
|
- reqFTP.Credentials = new NetworkCredential("300t", "300t");
|
|
|
+ Stream strm = reqFTP.GetRequestStream();
|
|
|
+ contentLen = fs.Read(buff, 0, buffLength);
|
|
|
+ while (contentLen != 0)
|
|
|
+ {
|
|
|
+ strm.Write(buff, 0, contentLen);
|
|
|
+ contentLen = fs.Read(buff, 0, buffLength);
|
|
|
+ }
|
|
|
+ strm.Close();
|
|
|
+ fs.Close();
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ WriteLog("Upload Error --> " + ex.Message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 下载
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="filePath"></param>
|
|
|
+ /// <param name="fileName"></param>
|
|
|
+ public void Download(string filePath, string fileName)
|
|
|
+ {
|
|
|
+ FtpWebRequest reqFTP;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ FileStream outputStream = new FileStream(filePath + "//" + fileName, FileMode.Create);
|
|
|
+ reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));
|
|
|
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
|
|
|
reqFTP.UseBinary = true;
|
|
|
+ reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
|
|
|
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
|
|
|
Stream ftpStream = response.GetResponseStream();
|
|
|
long cl = response.ContentLength;
|
|
|
@@ -128,8 +195,296 @@ namespace TrainVideoDataDispose
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
- throw new Exception(ex.Message);
|
|
|
+ WriteLog("Download Error --> " + ex.Message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 删除文件
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="fileName"></param>
|
|
|
+ public void Delete(string fileName)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ string uri = ftpURI + fileName;
|
|
|
+ FtpWebRequest reqFTP;
|
|
|
+ reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
|
|
|
+ reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
|
|
|
+ reqFTP.KeepAlive = false;
|
|
|
+ reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;
|
|
|
+ string result = String.Empty;
|
|
|
+ FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
|
|
|
+ long size = response.ContentLength;
|
|
|
+ Stream datastream = response.GetResponseStream();
|
|
|
+ StreamReader sr = new StreamReader(datastream);
|
|
|
+ result = sr.ReadToEnd();
|
|
|
+ sr.Close();
|
|
|
+ datastream.Close();
|
|
|
+ response.Close();
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ WriteLog("Delete Error --> " + ex.Message + " 文件名:" + fileName);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 获取当前目录下明细(包含文件和文件夹)
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ public string[] GetFilesDetailList()
|
|
|
+ {
|
|
|
+ string[] downloadFiles;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ StringBuilder result = new StringBuilder();
|
|
|
+ FtpWebRequest ftp;
|
|
|
+ ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
|
|
|
+ ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
|
|
|
+ ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
|
|
|
+ WebResponse response = ftp.GetResponse();
|
|
|
+ StreamReader reader = new StreamReader(response.GetResponseStream());
|
|
|
+ string line = reader.ReadLine();
|
|
|
+ line = reader.ReadLine();
|
|
|
+ line = reader.ReadLine();
|
|
|
+ while (line != null)
|
|
|
+ {
|
|
|
+ result.Append(line);
|
|
|
+ result.Append("\n");
|
|
|
+ line = reader.ReadLine();
|
|
|
+ }
|
|
|
+ result.Remove(result.ToString().LastIndexOf("\n"), 1);
|
|
|
+ reader.Close();
|
|
|
+ response.Close();
|
|
|
+ return result.ToString().Split('\n');
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ downloadFiles = null;
|
|
|
+ WriteLog("GetFilesDetailList Error --> " + ex.Message);
|
|
|
+ return downloadFiles;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 获取当前目录下文件列表(仅文件)
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ public string[] GetFileList(string mask)
|
|
|
+ {
|
|
|
+ string[] downloadFiles;
|
|
|
+ StringBuilder result = new StringBuilder();
|
|
|
+ FtpWebRequest reqFTP;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
|
|
|
+ reqFTP.UseBinary = true;
|
|
|
+ reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
|
|
|
+ reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
|
|
|
+ WebResponse response = reqFTP.GetResponse();
|
|
|
+ StreamReader reader = new StreamReader(response.GetResponseStream());
|
|
|
+ string line = reader.ReadLine();
|
|
|
+ while (line != null)
|
|
|
+ {
|
|
|
+ if (mask.Trim() != string.Empty && mask.Trim() != "*.*")
|
|
|
+ {
|
|
|
+ string mask_ = mask.Substring(0, mask.IndexOf("*"));
|
|
|
+ if (line.Substring(0, mask_.Length) == mask_)
|
|
|
+ {
|
|
|
+ result.Append(line);
|
|
|
+ result.Append("\n");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ result.Append(line);
|
|
|
+ result.Append("\n");
|
|
|
+ }
|
|
|
+ line = reader.ReadLine();
|
|
|
+ }
|
|
|
+ result.Remove(result.ToString().LastIndexOf('\n'), 1);
|
|
|
+ reader.Close();
|
|
|
+ response.Close();
|
|
|
+ return result.ToString().Split('\n');
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ downloadFiles = null;
|
|
|
+ if (ex.Message.Trim() != "远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。")
|
|
|
+ {
|
|
|
+ WriteLog("GetFileList Error --> " + ex.Message);
|
|
|
+ }
|
|
|
+ return downloadFiles;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 获取当前目录下所有的文件夹列表(仅文件夹)
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ public string[] GetDirectoryList()
|
|
|
+ {
|
|
|
+ string[] drectory = GetFilesDetailList();
|
|
|
+ string m = string.Empty;
|
|
|
+ foreach (string str in drectory)
|
|
|
+ {
|
|
|
+ if (str.Trim().Substring(0, 1).ToUpper() == "D")
|
|
|
+ {
|
|
|
+ m += str.Substring(54).Trim() + "\n";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ char[] n = new char[] { '\n' };
|
|
|
+ return m.Split(n);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 判断当前目录下指定的子目录是否存在
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="RemoteDirectoryName">指定的目录名</param>
|
|
|
+ public bool DirectoryExist(string RemoteDirectoryName)
|
|
|
+ {
|
|
|
+ string[] dirList = GetDirectoryList();
|
|
|
+ foreach (string str in dirList)
|
|
|
+ {
|
|
|
+ if (str.Trim() == RemoteDirectoryName.Trim())
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 判断当前目录下指定的文件是否存在
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="RemoteFileName">远程文件名</param>
|
|
|
+ public bool FileExist(string RemoteFileName)
|
|
|
+ {
|
|
|
+ string[] fileList = GetFileList("*.*");
|
|
|
+ foreach (string str in fileList)
|
|
|
+ {
|
|
|
+ if (str.Trim() == RemoteFileName.Trim())
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 创建文件夹
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dirName"></param>
|
|
|
+ public void MakeDir(string dirName)
|
|
|
+ {
|
|
|
+ FtpWebRequest reqFTP;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ // dirName = name of the directory to create.
|
|
|
+ reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + dirName));
|
|
|
+ reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;
|
|
|
+ reqFTP.UseBinary = true;
|
|
|
+ reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
|
|
|
+ FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
|
|
|
+ Stream ftpStream = response.GetResponseStream();
|
|
|
+ ftpStream.Close();
|
|
|
+ response.Close();
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ WriteLog("MakeDir Error --> " + ex.Message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 获取指定文件大小
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="filename"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public long GetFileSize(string filename)
|
|
|
+ {
|
|
|
+ FtpWebRequest reqFTP;
|
|
|
+ long fileSize = 0;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + filename));
|
|
|
+ reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;
|
|
|
+ reqFTP.UseBinary = true;
|
|
|
+ reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
|
|
|
+ FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
|
|
|
+ Stream ftpStream = response.GetResponseStream();
|
|
|
+ fileSize = response.ContentLength;
|
|
|
+ ftpStream.Close();
|
|
|
+ response.Close();
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ WriteLog("GetFileSize Error --> " + ex.Message);
|
|
|
+ }
|
|
|
+ return fileSize;
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 改名
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="currentFilename"></param>
|
|
|
+ /// <param name="newFilename"></param>
|
|
|
+ public void ReName(string currentFilename, string newFilename)
|
|
|
+ {
|
|
|
+ FtpWebRequest reqFTP;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + currentFilename));
|
|
|
+ reqFTP.Method = WebRequestMethods.Ftp.Rename;
|
|
|
+ reqFTP.RenameTo = newFilename;
|
|
|
+ reqFTP.UseBinary = true;
|
|
|
+ reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
|
|
|
+ FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
|
|
|
+ Stream ftpStream = response.GetResponseStream();
|
|
|
+ ftpStream.Close();
|
|
|
+ response.Close();
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ WriteLog("ReName Error --> " + ex.Message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 移动文件
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="currentFilename"></param>
|
|
|
+ /// <param name="newFilename"></param>
|
|
|
+ public void MovieFile(string currentFilename, string newDirectory)
|
|
|
+ {
|
|
|
+ ReName(currentFilename, newDirectory);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 切换当前目录
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="DirectoryName"></param>
|
|
|
+ /// <param name="IsRoot">true 绝对路径 false 相对路径</param>
|
|
|
+ public void GotoDirectory(string DirectoryName, bool IsRoot)
|
|
|
+ {
|
|
|
+ if (IsRoot)
|
|
|
+ {
|
|
|
+ ftpRemotePath = DirectoryName;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ftpRemotePath += DirectoryName + "/";
|
|
|
}
|
|
|
+ ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";
|
|
|
+ }
|
|
|
+
|
|
|
+ private void WriteLog(string str)
|
|
|
+ {
|
|
|
+ if (System.IO.Directory.Exists(strFilePath + "\\log") == false)
|
|
|
+ {
|
|
|
+ System.IO.Directory.CreateDirectory(strFilePath + "\\log");
|
|
|
+ }
|
|
|
+ string strDate = System.DateTime.Now.ToString("yyyyMMdd");
|
|
|
+ System.IO.TextWriter tw = new System.IO.StreamWriter(strFilePath + "\\log\\" + "FTP_" + strDate + ".log", true);
|
|
|
+
|
|
|
+ tw.WriteLine(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
+ tw.WriteLine(str);
|
|
|
+ tw.WriteLine("\r\n");
|
|
|
+
|
|
|
+ tw.Close();
|
|
|
}
|
|
|
}
|
|
|
}
|