zoukankan      html  css  js  c++  java
  • C# FTP操作类

    C#语言: Codee#2416

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using System.Net;
    using System.Windows.Forms;
    using System.Globalization;
     
    namespace FtpLib
    {
     
        public class FtpWeb
        {
            string ftpServerIP;
            string ftpRemotePath;
            string ftpUserID;
            string ftpPassword;
            string ftpURI;
     
            /// <summary>
            /// 连接FTP
            /// </summary>
            /// <param name="FtpServerIP">FTP连接地址</param>
            /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>
            /// <param name="FtpUserID">用户名</param>
            /// <param name="FtpPassword">密码</param>
            public FtpWeb(string FtpServerIP, string FtpRemotePath, string FtpUserID, string FtpPassword)
            {
                ftpServerIP = FtpServerIP;
                ftpRemotePath = FtpRemotePath;
                ftpUserID = FtpUserID;
                ftpPassword = FtpPassword;
                ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";
            }
     
            /// <summary>
            /// 上传
            /// </summary>
            /// <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
                {
                    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)
                {
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "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;
                    int bufferSize = 2048;
                    int readCount;
                    byte[] buffer = new byte[bufferSize];
     
                    readCount = ftpStream.Read(buffer, 0, bufferSize);
                    while (readCount > 0)
                    {
                        outputStream.Write(buffer, 0, readCount);
                        readCount = ftpStream.Read(buffer, 0, bufferSize);
                    }
     
                    ftpStream.Close();
                    outputStream.Close();
                    response.Close();
                }
                catch (Exception ex)
                {
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "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)
                {
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "Delete Error --> " + ex.Message + "  文件名:" + fileName);
                }
            }
     
            /// <summary>
            /// 删除文件夹
            /// </summary>
            /// <param name="folderName"></param>
            public void RemoveDirectory(string folderName)
            {
                try
                {
                    string uri = ftpURI + folderName;
                    FtpWebRequest reqFTP;
                    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
     
                    reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                    reqFTP.KeepAlive = false;
                    reqFTP.Method = WebRequestMethods.Ftp.RemoveDirectory;
     
                    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)
                {
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "Delete Error --> " + ex.Message + "  文件名:" + folderName);
                }
            }
     
            /// <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(), Encoding.Default);
     
                    //while (reader.Read() > 0)
                    //{
     
                    //}
                    string line = reader.ReadLine();
                    //line = reader.ReadLine();
                    //line = reader.ReadLine();
     
                    while (line != null)
                    {
                        result.Append(line);
                        result.Append(" ");
                        line = reader.ReadLine();
                    }
                    result.Remove(result.ToString().LastIndexOf(" "), 1);
                    reader.Close();
                    response.Close();
                    return result.ToString().Split(' ');
                }
                catch (Exception ex)
                {
                    downloadFiles = null;
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFilesDetailList Error --> " + ex.Message);
                    return downloadFiles;
                }
            }
            /// <summary>
            /// 获取当前目录下文件列表(仅文件)
            /// </summary>
            /// <returns></returns>
     
         public string[] GetFileList(string path)//上面的代码示例了如何从ftp服务器上获得文件列表

        {
          string[] downloadFiles;
          FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
          ftp.UseBinary = true;

          ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//如果是匿名登录,则注释掉。
          StringBuilder result = new StringBuilder();
          try
           {

            ftp.Method = WebRequestMethods.Ftp.ListDirectory;
            WebResponse response = ftp.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);//中文文件名
            string line = reader.ReadLine();
            while (line != null)
            {
              result.Append(line);
              result.Append(" ");
              line = reader.ReadLine();
            }
            // to remove the trailing ' '
            result.Remove(result.ToString().LastIndexOf(' '), 1);
            reader.Close();
            response.Close();
            downloadFiles = result.ToString().Split(' ');
            }
          catch (Exception ex)
          {
            throw ex;
          }
          return downloadFiles;
        }

    /// <summary>
            /// 获取当前目录下所有的文件夹列表(仅文件夹)
            /// </summary>
            /// <returns></returns>
            public string[] GetDirectoryList()
            {
                string[] drectory = GetFilesDetailList();
                string m = string.Empty;
                foreach (string str in drectory)
                {
                    int dirPos = str.IndexOf("<DIR>");
                    if (dirPos>0)
                    {
                        /*判断 Windows 风格*/
                        m += str.Substring(dirPos + 5).Trim() + " ";
                    }
                    else if (str.Trim().Substring(0, 1).ToUpper() == "D")
                    {
                        /*判断 Unix 风格*/
                        string dir = str.Substring(54).Trim();
                        if (dir != "." && dir != "..")
                        {
                            m += dir + " ";
                        }
                    }
                }
     
                char[] n = new char[] { ' ' };
                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)
                {
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "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)
                {
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "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)
                {
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "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 + "/";
            }
     
            /// <summary>
            /// 删除订单目录
            /// </summary>
            /// <param name="ftpServerIP">FTP 主机地址</param>
            /// <param name="folderToDelete">FTP 用户名</param>
            /// <param name="ftpUserID">FTP 用户名</param>
            /// <param name="ftpPassword">FTP 密码</param>
            public static void DeleteOrderDirectory(string ftpServerIP, string folderToDelete, string ftpUserID, string ftpPassword)
            {
                try{
                    if (!string.IsNullOrEmpty(ftpServerIP) && !string.IsNullOrEmpty(folderToDelete) && !string.IsNullOrEmpty(ftpUserID) && !string.IsNullOrEmpty(ftpPassword))
                    {
                        FtpWeb fw = new FtpWeb(ftpServerIP, folderToDelete, ftpUserID, ftpPassword);
                        //进入订单目录
                        fw.GotoDirectory(folderToDelete, true);
                        //获取规格目录
                        string[] folders = fw.GetDirectoryList();
                        foreach (string folder in folders)
                        {
                            if (!string.IsNullOrEmpty(folder) || folder != "")
                            {
                                //进入订单目录
                                string subFolder = folderToDelete + "/" + folder;
                                fw.GotoDirectory(subFolder, true);
                                //获取文件列表
                                string[] files = fw.GetFileList("*.*");
                                if (files != null)
                                {
                                    //删除文件
                                    foreach (string file in files)
                                    {
                                        fw.Delete(file);
                                    }
                                }
                                //删除冲印规格文件夹
                                fw.GotoDirectory(folderToDelete, true);
                                fw.RemoveDirectory(folder);
                            }
                        }
     
                        //删除订单文件夹
                        string parentFolder = folderToDelete.Remove(folderToDelete.LastIndexOf('/'));
                        string orderFolder = folderToDelete.Substring(folderToDelete.LastIndexOf('/') + 1);
                        fw.GotoDirectory(parentFolder, true);
                        fw.RemoveDirectory(orderFolder);
                    }
                    else
                    {
                        throw new Exception("FTP 及路径不能为空!");
                    }
                }
                catch(Exception ex)
                {
                    throw new Exception("删除订单时发生错误,错误信息为:" + ex.Message);
                }
            }
        }
     
     
        public class Insert_Standard_ErrorLog
        {
            public static void Insert(string x, string y)
            {
     
            }
        }
     
     
    }

    ---恢复内容结束---

    C#语言: Codee#2416

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using System.Net;
    using System.Windows.Forms;
    using System.Globalization;
     
    namespace FtpLib
    {
     
        public class FtpWeb
        {
            string ftpServerIP;
            string ftpRemotePath;
            string ftpUserID;
            string ftpPassword;
            string ftpURI;
     
            /// <summary>
            /// 连接FTP
            /// </summary>
            /// <param name="FtpServerIP">FTP连接地址</param>
            /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>
            /// <param name="FtpUserID">用户名</param>
            /// <param name="FtpPassword">密码</param>
            public FtpWeb(string FtpServerIP, string FtpRemotePath, string FtpUserID, string FtpPassword)
            {
                ftpServerIP = FtpServerIP;
                ftpRemotePath = FtpRemotePath;
                ftpUserID = FtpUserID;
                ftpPassword = FtpPassword;
                ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";
            }
     
            /// <summary>
            /// 上传
            /// </summary>
            /// <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
                {
                    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)
                {
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "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;
                    int bufferSize = 2048;
                    int readCount;
                    byte[] buffer = new byte[bufferSize];
     
                    readCount = ftpStream.Read(buffer, 0, bufferSize);
                    while (readCount > 0)
                    {
                        outputStream.Write(buffer, 0, readCount);
                        readCount = ftpStream.Read(buffer, 0, bufferSize);
                    }
     
                    ftpStream.Close();
                    outputStream.Close();
                    response.Close();
                }
                catch (Exception ex)
                {
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "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)
                {
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "Delete Error --> " + ex.Message + "  文件名:" + fileName);
                }
            }
     
            /// <summary>
            /// 删除文件夹
            /// </summary>
            /// <param name="folderName"></param>
            public void RemoveDirectory(string folderName)
            {
                try
                {
                    string uri = ftpURI + folderName;
                    FtpWebRequest reqFTP;
                    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
     
                    reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                    reqFTP.KeepAlive = false;
                    reqFTP.Method = WebRequestMethods.Ftp.RemoveDirectory;
     
                    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)
                {
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "Delete Error --> " + ex.Message + "  文件名:" + folderName);
                }
            }
     
            /// <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(), Encoding.Default);
     
                    //while (reader.Read() > 0)
                    //{
     
                    //}
                    string line = reader.ReadLine();
                    //line = reader.ReadLine();
                    //line = reader.ReadLine();
     
                    while (line != null)
                    {
                        result.Append(line);
                        result.Append(" ");
                        line = reader.ReadLine();
                    }
                    result.Remove(result.ToString().LastIndexOf(" "), 1);
                    reader.Close();
                    response.Close();
                    return result.ToString().Split(' ');
                }
                catch (Exception ex)
                {
                    downloadFiles = null;
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFilesDetailList Error --> " + ex.Message);
                    return downloadFiles;
                }
            }
            /// <summary>
            /// 获取当前目录下文件列表(仅文件)
            /// </summary>
            /// <returns></returns>
     
         public string[] GetFileList(string path)//上面的代码示例了如何从ftp服务器上获得文件列表

        {
          string[] downloadFiles;
          FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
          ftp.UseBinary = true;

          ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//如果是匿名登录,则注释掉。
          StringBuilder result = new StringBuilder();
          try
           {

            ftp.Method = WebRequestMethods.Ftp.ListDirectory;
            WebResponse response = ftp.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);//中文文件名
            string line = reader.ReadLine();
            while (line != null)
            {
              result.Append(line);
              result.Append(" ");
              line = reader.ReadLine();
            }
            // to remove the trailing ' '
            result.Remove(result.ToString().LastIndexOf(' '), 1);
            reader.Close();
            response.Close();
            downloadFiles = result.ToString().Split(' ');
            }
          catch (Exception ex)
          {
            throw ex;
          }
          return downloadFiles;
        }

    /// <summary>
            /// 获取当前目录下所有的文件夹列表(仅文件夹)
            /// </summary>
            /// <returns></returns>
            public string[] GetDirectoryList()
            {
                string[] drectory = GetFilesDetailList();
                string m = string.Empty;
                foreach (string str in drectory)
                {
                    int dirPos = str.IndexOf("<DIR>");
                    if (dirPos>0)
                    {
                        /*判断 Windows 风格*/
                        m += str.Substring(dirPos + 5).Trim() + " ";
                    }
                    else if (str.Trim().Substring(0, 1).ToUpper() == "D")
                    {
                        /*判断 Unix 风格*/
                        string dir = str.Substring(54).Trim();
                        if (dir != "." && dir != "..")
                        {
                            m += dir + " ";
                        }
                    }
                }
     
                char[] n = new char[] { ' ' };
                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)
                {
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "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)
                {
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "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)
                {
                    Insert_Standard_ErrorLog.Insert("FtpWeb", "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 + "/";
            }
     
            /// <summary>
            /// 删除订单目录
            /// </summary>
            /// <param name="ftpServerIP">FTP 主机地址</param>
            /// <param name="folderToDelete">FTP 用户名</param>
            /// <param name="ftpUserID">FTP 用户名</param>
            /// <param name="ftpPassword">FTP 密码</param>
            public static void DeleteOrderDirectory(string ftpServerIP, string folderToDelete, string ftpUserID, string ftpPassword)
            {
                try{
                    if (!string.IsNullOrEmpty(ftpServerIP) && !string.IsNullOrEmpty(folderToDelete) && !string.IsNullOrEmpty(ftpUserID) && !string.IsNullOrEmpty(ftpPassword))
                    {
                        FtpWeb fw = new FtpWeb(ftpServerIP, folderToDelete, ftpUserID, ftpPassword);
                        //进入订单目录
                        fw.GotoDirectory(folderToDelete, true);
                        //获取规格目录
                        string[] folders = fw.GetDirectoryList();
                        foreach (string folder in folders)
                        {
                            if (!string.IsNullOrEmpty(folder) || folder != "")
                            {
                                //进入订单目录
                                string subFolder = folderToDelete + "/" + folder;
                                fw.GotoDirectory(subFolder, true);
                                //获取文件列表
                                string[] files = fw.GetFileList("*.*");
                                if (files != null)
                                {
                                    //删除文件
                                    foreach (string file in files)
                                    {
                                        fw.Delete(file);
                                    }
                                }
                                //删除冲印规格文件夹
                                fw.GotoDirectory(folderToDelete, true);
                                fw.RemoveDirectory(folder);
                            }
                        }
     
                        //删除订单文件夹
                        string parentFolder = folderToDelete.Remove(folderToDelete.LastIndexOf('/'));
                        string orderFolder = folderToDelete.Substring(folderToDelete.LastIndexOf('/') + 1);
                        fw.GotoDirectory(parentFolder, true);
                        fw.RemoveDirectory(orderFolder);
                    }
                    else
                    {
                        throw new Exception("FTP 及路径不能为空!");
                    }
                }
                catch(Exception ex)
                {
                    throw new Exception("删除订单时发生错误,错误信息为:" + ex.Message);
                }
            }
        }
     
     
        public class Insert_Standard_ErrorLog
        {
            public static void Insert(string x, string y)
            {
     
            }
        }
     
     
    }
  • 相关阅读:
    在C#代码中应用Log4Net(二)典型的使用方式
    在C#代码中应用Log4Net(一)简单使用Log4Net
    Windows Azure Active Directory (2) Windows Azure AD基础
    Windows Azure Virtual Network (6) 设置Azure Virtual Machine固定公网IP (Virtual IP Address, VIP) (1)
    Windows Azure Active Directory (1) 前言
    Azure China (6) SAP 应用在华登陆 Windows Azure 公有云
    Microsoft Azure News(3) Azure新的基本实例上线 (Basic Virtual Machine)
    Microsoft Azure News(2) 在Microsoft Azure上运行SAP应用程序
    Microsoft Azure News(1) 新的数据中心Japan East, Japan West and Brazil South
    Windows Azure HandBook (2) Azure China提供的服务
  • 原文地址:https://www.cnblogs.com/ZhengHengWU/p/6892021.html
Copyright © 2011-2022 走看看