1. 程式人生 > >C#獲取ftp上的資料夾、檔案目錄

C#獲取ftp上的資料夾、檔案目錄

C#連線ftp是比較麻煩的,特別是讀資料的時候

這裡是一行一行讀的。

資料夾和檔案差異就一行,直接貼

 /// <summary>
        /// 獲取當前目錄下資料夾
        /// </summary>
        /// <returns></returns>
        public string[] GetFilesDirList()
        {

            // string[] downloadFiles;
            try
            {
                StringBuilder result = new StringBuilder();//如果要修改字串而不建立新的物件,則可以使用 System.Text.StringBuilder 類。
                FtpWebRequest ftp;
                ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));//"ftp://10.12.12.9";
                ftp.Credentials = new NetworkCredential(FTPUSERNAME, FTPPASSWORD);
                ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;//目錄
                WebResponse response = ftp.GetResponse();//response為一個ftp的WebResponse
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);//讀入responses所建立的資料流
                string line = reader.ReadLine();//輸入流中的下一行;如果到達了輸入流的末尾,則為空引用
                while (line != null)
                {
                    result.Append(line);//)Append 方法可用來將文字或物件的字串表示形式新增到由當前 StringBuilder 物件表示的字串的結尾處。
                    result.Append("\n");
                    line = reader.ReadLine();
                    textBox1.Text = line;
                }
                result.Remove(result.ToString().LastIndexOf("\n"), 1);//移除最後的換行》?
                reader.Close();
                response.Close();
                return result.ToString().Split('\n');
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        //===================================================
        /// <summary>
        /// 獲取選中資料夾下的檔案
        /// </summary>
        /// <returns></returns>
        public string[] GetFilesList()//
        {


            string url = path + "/" + SelectDir;//============和之前的資料夾唯一的不同就在於此,加上了資料夾的名字..我會優化的
            try
            {
                StringBuilder result = new StringBuilder();//如果要修改字串而不建立新的物件,則可以使用 System.Text.StringBuilder 類。
                FtpWebRequest ftp;
                ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
                ftp.Credentials = new NetworkCredential(FTPUSERNAME, FTPPASSWORD);
                ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;//目錄
                WebResponse response = ftp.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);//讀入responses所建立的資料流
                string line = reader.ReadLine();//輸入流中的下一行;如果到達了輸入流的末尾,則為空引用
                while (line != null)
                {
                    result.Append(line);//)Append 方法可用來將文字或物件的字串表示形式新增到由當前 StringBuilder 物件表示的字串的結尾處。
                    result.Append("\n");
                    line = reader.ReadLine();
                    textBox1.Text = line;
                }
                result.Remove(result.ToString().LastIndexOf("\n"), 1);//移除最後的換行》?
                reader.Close();
                response.Close();
                return result.ToString().Split('\n');
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }