中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

C#的一個(gè)FTP操作封裝類FTPHelper

2018-07-20    來(lái)源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用
    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Text;  
    using System.Net;  
    using System.IO;  
      
    public class FTPHelper  
    {  
        /// <summary>  
        /// FTP請(qǐng)求對(duì)象  
        /// </summary>  
        FtpWebRequest request = null;  
        /// <summary>  
        /// FTP響應(yīng)對(duì)象  
        /// </summary>  
        FtpWebResponse response = null;  
        /// <summary>  
        /// FTP服務(wù)器地址  
        /// </summary>  
        public string ftpURI { get; private set; }  
        /// <summary>  
        /// FTP服務(wù)器IP  
        /// </summary>  
        public string ftpServerIP { get; private set; }  
        /// <summary>  
        /// FTP服務(wù)器默認(rèn)目錄  
        /// </summary>  
        public string ftpRemotePath { get; private set; }  
        /// <summary>  
        /// FTP服務(wù)器登錄用戶名  
        /// </summary>  
        public string ftpUserID { get; private set; }  
        /// <summary>  
        /// FTP服務(wù)器登錄密碼  
        /// </summary>  
        public string ftpPassword { get; private set; }  
      
        /// <summary>    
        /// 初始化  
        /// </summary>    
        /// <param name="FtpServerIP">FTP連接地址</param>    
        /// <param name="FtpRemotePath">指定FTP連接成功后的當(dāng)前目錄, 如果不指定即默認(rèn)為根目錄</param>    
        /// <param name="FtpUserID">用戶名</param>    
        /// <param name="FtpPassword">密碼</param>    
        public FTPHelper(string ftpServerIP, string ftpRemotePath, string ftpUserID, string ftpPassword)  
        {  
            this.ftpServerIP = ftpServerIP;  
            this.ftpRemotePath = ftpRemotePath;  
            this.ftpUserID = ftpUserID;  
            this.ftpPassword = ftpPassword;  
            this.ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";  
        }  
        ~FTPHelper()  
        {  
            if (response != null)  
            {  
                response.Close();  
                response = null;  
            }  
            if (request != null)  
            {  
                request.Abort();  
                request = null;  
            }  
        }  
        /// <summary>  
        /// 建立FTP鏈接,返回響應(yīng)對(duì)象  
        /// </summary>  
        /// <param name="uri">FTP地址</param>  
        /// <param name="ftpMethod">操作命令</param>  
        /// <returns></returns>  
        private FtpWebResponse Open(Uri uri, string ftpMethod)  
        {  
            request = (FtpWebRequest)FtpWebRequest.Create(uri);  
            request.Method = ftpMethod;  
            request.UseBinary = true;  
            request.KeepAlive = false;  
            request.Credentials = new NetworkCredential(this.ftpUserID, this.ftpPassword);  
            return (FtpWebResponse)request.GetResponse();  
        }  
      
        /// <summary>         
        /// 建立FTP鏈接,返回請(qǐng)求對(duì)象         
        /// </summary>        
        /// <param name="uri">FTP地址</param>         
        /// <param name="ftpMethod">操作命令</param>         
        private FtpWebRequest OpenRequest(Uri uri, string ftpMethod)  
        {  
            request = (FtpWebRequest)WebRequest.Create(uri);  
            request.Method = ftpMethod;  
            request.UseBinary = true;  
            request.KeepAlive = false;  
            request.Credentials = new NetworkCredential(this.ftpUserID, this.ftpPassword);  
            return request;  
        }  
        /// <summary>  
        /// 創(chuàng)建目錄  
        /// </summary>  
        /// <param name="remoteDirectoryName">目錄名</param>  
        public void CreateDirectory(string remoteDirectoryName)  
        {  
            response = Open(new Uri(ftpURI + remoteDirectoryName), WebRequestMethods.Ftp.MakeDirectory);  
        }  
        /// <summary>  
        /// 更改目錄或文件名  
        /// </summary>  
        /// <param name="currentName">當(dāng)前名稱</param>  
        /// <param name="newName">修改后新名稱</param>  
        public void ReName(string currentName, string newName)  
        {  
            request = OpenRequest(new Uri(ftpURI + currentName), WebRequestMethods.Ftp.Rename);  
            request.RenameTo = newName;  
            response = (FtpWebResponse)request.GetResponse();  
        }     
        /// <summary>    
        /// 切換當(dāng)前目錄    
        /// </summary>    
        /// <param name="IsRoot">true:絕對(duì)路徑 false:相對(duì)路徑</param>     
        public void GotoDirectory(string DirectoryName, bool IsRoot)  
        {  
            if (IsRoot)  
                ftpRemotePath = DirectoryName;  
            else  
                ftpRemotePath += "/" + DirectoryName;  
      
            ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";  
        }         
        /// <summary>  
        /// 刪除目錄(包括下面所有子目錄和子文件)  
        /// </summary>  
        /// <param name="remoteDirectoryName">要?jiǎng)h除的帶路徑目錄名:如web/test</param>  
        /* 
         * 例:刪除test目錄 
         FTPHelper helper = new FTPHelper("x.x.x.x", "web", "user", "password");                   
         helper.RemoveDirectory("web/test"); 
         */  
        public void RemoveDirectory(string remoteDirectoryName)  
        {  
            GotoDirectory(remoteDirectoryName, true);  
            var listAll = ListFilesAndDirectories();  
            foreach (var m in listAll)  
            {  
                if (m.IsDirectory)             
                    RemoveDirectory(m.Path);             
                else             
                    DeleteFile(m.Name);             
            }  
            GotoDirectory(remoteDirectoryName, true);  
            response = Open(new Uri(ftpURI), WebRequestMethods.Ftp.RemoveDirectory);  
        }  
        /// <summary>  
        /// 文件上傳  
        /// </summary>  
        /// <param name="localFilePath">本地文件路徑</param>  
        public void Upload(string localFilePath)  
        {  
            FileInfo fileInf = new FileInfo(localFilePath);  
            request = OpenRequest(new Uri(ftpURI + fileInf.Name), WebRequestMethods.Ftp.UploadFile);  
            request.ContentLength = fileInf.Length;  
            int buffLength = 2048;  
            byte[] buff = new byte[buffLength];  
            int contentLen;  
            using (var fs = fileInf.OpenRead())  
            {  
                using (var strm = request.GetRequestStream())  
                {  
                    contentLen = fs.Read(buff, 0, buffLength);  
                    while (contentLen != 0)  
                    {  
                        strm.Write(buff, 0, contentLen);  
                        contentLen = fs.Read(buff, 0, buffLength);  
                    }  
                }  
            }  
        }  
        /// <summary>    
        /// 刪除文件    
        /// </summary>    
        /// <param name="remoteFileName">要?jiǎng)h除的文件名</param>  
        public void DeleteFile(string remoteFileName)  
        {  
            response = Open(new Uri(ftpURI + remoteFileName), WebRequestMethods.Ftp.DeleteFile);  
        }  
      
        /// <summary>  
        /// 獲取當(dāng)前目錄的文件和一級(jí)子目錄信息  
        /// </summary>  
        /// <returns></returns>  
        public List<FileStruct> ListFilesAndDirectories()  
        {  
            var fileList = new List<FileStruct>();  
            response = Open(new Uri(ftpURI), WebRequestMethods.Ftp.ListDirectoryDetails);  
            using (var stream = response.GetResponseStream())  
            {  
                using (var sr = new StreamReader(stream))  
                {  
                    string line = null;  
                    while ((line = sr.ReadLine()) != null)  
                    {  
                        //line的格式如下:  
                        //08-18-13  11:05PM       <DIR>          aspnet_client  
                        //09-22-13  11:39PM                 2946 Default.aspx  
                        DateTime dtDate = DateTime.ParseExact(line.Substring(0, 8), "MM-dd-yy", null);  
                        DateTime dtDateTime = DateTime.Parse(dtDate.ToString("yyyy-MM-dd") + line.Substring(8, 9));  
                        string[] arrs = line.Split(' ');  
                        var model = new FileStruct()  
                        {  
                            IsDirectory = line.IndexOf("<DIR>") > 0 ? true : false,  
                            CreateTime = dtDateTime,  
                            Name = arrs[arrs.Length - 1],  
                            Path = ftpRemotePath + "/" + arrs[arrs.Length - 1]  
                        };  
                        fileList.Add(model);  
                    }  
                }  
            }  
            return fileList;  
        }  
        /// <summary>         
        /// 列出當(dāng)前目錄的所有文件         
        /// </summary>         
        public List<FileStruct> ListFiles()  
        {  
            var listAll = ListFilesAndDirectories();  
            var listFile = listAll.Where(m => m.IsDirectory == false).ToList();  
            return listFile;  
        }  
        /// <summary>         
        /// 列出當(dāng)前目錄的所有一級(jí)子目錄         
        /// </summary>         
        public List<FileStruct> ListDirectories()  
        {  
            var listAll = ListFilesAndDirectories();  
            var listFile = listAll.Where(m => m.IsDirectory == true).ToList();  
            return listFile;  
        }  
        /// <summary>         
        /// 判斷當(dāng)前目錄下指定的子目錄或文件是否存在         
        /// </summary>         
        /// <param name="remoteName">指定的目錄或文件名</param>        
        public bool IsExist(string remoteName)  
        {  
            var list = ListFilesAndDirectories();  
            if (list.Count(m => m.Name == remoteName) > 0)  
                return true;  
            return false;  
        }  
        /// <summary>         
        /// 判斷當(dāng)前目錄下指定的一級(jí)子目錄是否存在         
        /// </summary>         
        /// <param name="RemoteDirectoryName">指定的目錄名</param>        
        public bool IsDirectoryExist(string remoteDirectoryName)  
        {  
            var listDir = ListDirectories();  
            if (listDir.Count(m => m.Name == remoteDirectoryName) > 0)  
                return true;  
            return false;  
        }  
        /// <summary>         
        /// 判斷當(dāng)前目錄下指定的子文件是否存在        
        /// </summary>         
        /// <param name="RemoteFileName">遠(yuǎn)程文件名</param>         
        public bool IsFileExist(string remoteFileName)  
        {  
            var listFile = ListFiles();  
            if (listFile.Count(m => m.Name == remoteFileName) > 0)  
                return true;  
            return false;  
        }  
      
        /// <summary>  
        /// 下載  
        /// </summary>  
        /// <param name="saveFilePath">下載后的保存路徑</param>  
        /// <param name="downloadFileName">要下載的文件名</param>  
        public void Download(string saveFilePath, string downloadFileName)  
        {  
            using (FileStream outputStream = new FileStream(saveFilePath + "\\" + downloadFileName, FileMode.Create))  
            {  
                response = Open(new Uri(ftpURI + downloadFileName), WebRequestMethods.Ftp.DownloadFile);  
                using (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);  
                    }  
                }  
            }  
        }  
      
         
    }  
      
    public class FileStruct  
    {  
        /// <summary>  
        /// 是否為目錄  
        /// </summary>  
        public bool IsDirectory { get; set; }  
        /// <summary>  
        /// 創(chuàng)建時(shí)間  
        /// </summary>  
        public DateTime CreateTime { get; set; }  
        /// <summary>  
        /// 文件或目錄名稱  
        /// </summary>  
        public string Name { get; set; }  
        /// <summary>  
        /// 路徑  
        /// </summary>  
        public string Path { get; set; }  
    }  

標(biāo)簽: ftp服務(wù)器 ftp服務(wù)器地址 服務(wù)器 服務(wù)器地址

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:跟App相關(guān)的Android輔助類

下一篇:讀取jar包中的圖片的代碼