Torna al Thread

using System; using System.Collections.Generic; using System.IO; using System.Net; public class libFTP { public struct DirectoryItem { public Uri BaseUri; public string AbsolutePath { get { return string.Format("{0}/{1}", BaseUri, Name); } } public bool IsDirectory; public string Permission; public string Proprietary; public DateTime DateCreated; public string Name; public int Size; public List<DirectoryItem> Items; } public libFTP() { } public List<DirectoryItem> GetDirectoryInformation(string address, string username, string password,Boolean scanSubDirectory = false) { FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(address); request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; request.Credentials = new NetworkCredential(username, password); request.UsePassive = true; request.UseBinary = true; request.KeepAlive = false; List<DirectoryItem> returnValue = new List<DirectoryItem>(); string[] list = null; using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()) using (StreamReader reader = new StreamReader(response.GetResponseStream())) { list = reader.ReadToEnd().Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); } foreach (string line in list) { string[] lstLine = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); // Create directory info DirectoryItem item = new DirectoryItem(); item.BaseUri = new Uri(address); item.Permission = lstLine[0]; //Permission if (lstLine[0].ToCharArray()[0] == 'd') { item.IsDirectory = true; item.Size = 0; } else { item.Size = int.Parse(lstLine[4]); } item.Proprietary = lstLine[2]; // Windows FTP Server Response Format // DateCreated IsDirectory Name string data = line; // Parse date string[] mySplit; mySplit = data.Split(new string[] { lstLine[4] }, StringSplitOptions.RemoveEmptyEntries); string date = mySplit[1]; mySplit = date.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); date = mySplit[0] +" "+ mySplit[1] +" "+ mySplit[2]; DateTime dateTime = DateTime.Parse(date, System.Globalization.CultureInfo.CreateSpecificCulture("en-US").DateTimeFormat); item.DateCreated = dateTime; mySplit = data.Split(new string[] { mySplit[2] }, StringSplitOptions.RemoveEmptyEntries); // Parse name string name = mySplit[1].Trim(); item.Name = name; if (scanSubDirectory == true) { Console.WriteLine(item.AbsolutePath); item.Items = item.IsDirectory ? GetDirectoryInformation(item.AbsolutePath, username, password) : null; } returnValue.Add(item); } return returnValue; } }
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5