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

C# FTP操作類

2018-07-20    來源:open-open

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;

namespace Utility
{
    public class FtpUpDown
    {

        string ftpServerIP;

        string ftpUserID;

        string ftpPassword;

        FtpWebRequest reqFTP;

        private void Connect(String path)//連接ftp
        {

            // 根據(jù)uri創(chuàng)建FtpWebRequest對象

            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));

            // 指定數(shù)據(jù)傳輸類型

            reqFTP.UseBinary = true;

            // ftp用戶名和密碼

            reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);

        }

        public FtpUpDown(string ftpServerIP, string ftpUserID, string ftpPassword)
        {
            this.ftpServerIP = ftpServerIP;

            this.ftpUserID = ftpUserID;

            this.ftpPassword = ftpPassword;
        }

        //都調(diào)用這個

        private string[] GetFileList(string path, string WRMethods)//上面的代碼示例了如何從ftp服務(wù)器上獲得文件列表
        {
            string[] downloadFiles;
            StringBuilder result = new StringBuilder();
            try
            {
                Connect(path);

                reqFTP.Method = WRMethods;

                WebResponse response = reqFTP.GetResponse();

                StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);//中文文件名

                string line = reader.ReadLine();

                while (line != null)
                {

                    result.Append(line);

                    result.Append("\n");

                    line = reader.ReadLine();

                }

                // to remove the trailing '\n'

                result.Remove(result.ToString().LastIndexOf('\n'), 1);

                reader.Close();

                response.Close();

                return result.ToString().Split('\n');

            }

            catch (Exception ex)
            {
                Log.WriteError("Get FileList Error:" + ex.Message);
                downloadFiles = null;

                return downloadFiles;
            }
        }

        public string[] GetFileList(string path)//上面的代碼示例了如何從ftp服務(wù)器上獲得文件列表
        {
            return GetFileList("ftp://" + ftpServerIP + "/" + path, WebRequestMethods.Ftp.ListDirectory);
        }
        public string[] GetFileList()//上面的代碼示例了如何從ftp服務(wù)器上獲得文件列表
        {
            return GetFileList("ftp://" + ftpServerIP + "/", WebRequestMethods.Ftp.ListDirectory);
        }

        public void Upload(string filename) //上面的代碼實現(xiàn)了從ftp服務(wù)器上載文件的功能
        {
            FileInfo fileInf = new FileInfo(filename);

            string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;

            Connect(uri);//連接        

            // 默認為true,連接不會被關(guān)閉

            // 在一個命令之后被執(zhí)行

            reqFTP.KeepAlive = false;

            // 指定執(zhí)行什么命令

            reqFTP.Method = WebRequestMethods.Ftp.UploadFile;

            // 上傳文件時通知服務(wù)器文件的大小

            reqFTP.ContentLength = fileInf.Length;
            // 緩沖大小設(shè)置為kb 
            int buffLength = 2048;
            byte[] buff = new byte[buffLength];

            int contentLen;

            // 打開一個文件流(System.IO.FileStream) 去讀上傳的文件

            FileStream fs = fileInf.OpenRead();

            try
            {

                // 把上傳的文件寫入流

                Stream strm = reqFTP.GetRequestStream();

                // 每次讀文件流的kb

                contentLen = fs.Read(buff, 0, buffLength);

                // 流內(nèi)容沒有結(jié)束

                while (contentLen != 0)
                {
                    // 把內(nèi)容從file stream 寫入upload stream 
                    strm.Write(buff, 0, contentLen);
                    contentLen = fs.Read(buff, 0, buffLength);

                }

                // 關(guān)閉兩個流

                strm.Close();

                fs.Close();

            }

            catch (Exception ex)
            {
                 Log.WriteError( "Upload Error:" + ex.Message);
            }

        }

        public bool Download(string filePath, string fileName, out string errorinfo)////上面的代碼實現(xiàn)了從ftp服務(wù)器下載文件的功能
        {
            try
            {
                String onlyFileName = Path.GetFileName(fileName);

                string newFileName = filePath + "\\" + onlyFileName;

                if (File.Exists(newFileName))
                {

                    errorinfo = string.Format("本地文件{0}已存在,無法下載", newFileName);
                    return false;
                }
                string url = "ftp://" + ftpServerIP + "/" + fileName;
                Connect(url);//連接  
                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);

                FileStream outputStream = new FileStream(newFileName, FileMode.Create);
                while (readCount > 0)
                {
                    outputStream.Write(buffer, 0, readCount);
                    readCount = ftpStream.Read(buffer, 0, bufferSize);
                }
                ftpStream.Close();
                outputStream.Close();
                response.Close();

                errorinfo = "";

                return true;

            }

            catch (Exception ex)
            {
                errorinfo = string.Format("因{0},無法下載", ex.Message);

                return false;

            }

        }

        //刪除文件

        public void DeleteFileName(string fileName)
        {
            try
            {
                FileInfo fileInf = new FileInfo(fileName);

                string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;

                Connect(uri);//連接        

                // 默認為true,連接不會被關(guān)閉

                // 在一個命令之后被執(zhí)行

                reqFTP.KeepAlive = false;

                // 指定執(zhí)行什么命令

                reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;

                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                response.Close();

            }

            catch (Exception ex)
            {
                Log.WriteError("刪除錯誤:" + ex.Message);
            }

        }

        //創(chuàng)建目錄

        public void MakeDir(string dirName)
        {
            try
            {
                string uri = "ftp://" + ftpServerIP + "/" + dirName;

                Connect(uri);//連接     

                reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;

                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

                response.Close();

            }

            catch (Exception ex)
            {
                Log.WriteError("創(chuàng)建目錄錯誤:" + ex.Message);
            }

        }

        //刪除目錄

        public void delDir(string dirName)
        {
            try
            {
                string uri = "ftp://" + ftpServerIP + "/" + dirName;

                Connect(uri);//連接     

                reqFTP.Method = WebRequestMethods.Ftp.RemoveDirectory;

                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

                response.Close();

            }

            catch (Exception ex)
            {
                Log.WriteError("刪除目錄錯誤:" + ex.Message);
            }

        }

        //獲得文件大小

        public long GetFileSize(string filename)
        {

 

            long fileSize = 0;

            try
            {

                FileInfo fileInf = new FileInfo(filename);

                string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;

                Connect(uri);//連接     

                reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;

                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

                fileSize = response.ContentLength;

                response.Close();

            }

            catch (Exception ex)
            {
                Log.WriteError("獲得文件大小錯誤:" + ex.Message);
            }

            return fileSize;

        }

        //文件改名

        public void Rename(string currentFilename, string newFilename)
        {
            try
            {
                FileInfo fileInf = new FileInfo(currentFilename);
                string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
                Connect(uri);//連接
                reqFTP.Method = WebRequestMethods.Ftp.Rename;
                reqFTP.RenameTo = newFilename;
                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                response.Close();

            }

            catch (Exception ex)
            {
                Log.WriteError("文件改名錯誤:" + ex.Message);
            }

        }
        //讀取文件

        public Stream ReadFile(string fileName)
        {
            try
            {
                string url = "ftp://" + ftpServerIP + "/" + fileName;
                Connect(url);//連接  
                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                Stream ftpStream = response.GetResponseStream();
                return ftpStream;
            }

            catch (Exception ex)
            {
                Log.WriteError("讀取文件錯誤:" + ex.Message);
                return null;
            }

        }

        //獲得文件明晰

        public string[] GetFilesDetailList()
        {

            return GetFileList("ftp://" + ftpServerIP + "/", WebRequestMethods.Ftp.ListDirectoryDetails);

        }

        //獲得文件明晰

        public string[] GetFilesDetailList(string path)
        {

            return GetFileList("ftp://" + ftpServerIP + "/" + path, WebRequestMethods.Ftp.ListDirectoryDetails);

        }

        // 文件存在檢查 
        public bool fileCheckExist(string fileName) 
        { 
            bool success = false;
            FtpWebResponse response = null;
            StreamReader reader = null;
            try 
            {
                string url = "ftp://" + ftpServerIP + "/" + fileName;
                Connect(url);//連接  
                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                response = (FtpWebResponse)reqFTP.GetResponse();
                reader = new StreamReader(response.GetResponseStream());
                string line = reader.ReadLine(); 
                if (line != null) 
                {
                    success = true; 
                } 
            } 
            catch (Exception) 
            {
                success = false; 
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }

                if (response != null)
                {
                    response.Close();
                }
            }
            return success; 
        } 
    }
}

標(biāo)簽: ftp服務(wù)器 ftp服務(wù)器下載 代碼 服務(wù)器

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

上一篇: C#遞歸遍歷文件夾

下一篇:C#刪除文件和文件夾到回收站的代碼