List all files from FTP online directory to C # list

Like me and everyone who reads this list, all the files from the online directory to the list?

This is the code for the local directory to be specified. I would like to know if there is a way to do this so that it connects to the FTP site and displays the files?

FolderBrowserDialog folderPicker = new FolderBrowserDialog(); if (folderPicker.ShowDialog() == DialogResult.OK) { ListView1.Items.Clear(); string[] files = Directory.GetFiles(folderPicker.SelectedPath); foreach (string file in files) { string fileName = Path.GetFileNameWithoutExtension(file); ListViewItem item = new ListViewItem(fileName); item.Tag = file; ListView1.Items.Add(item); } } 

I used this code, but I can not get it to work so that it does not appear with an error, but does it not display files on the web server?

 private void ConnectBtn_Click(object sender, EventArgs e) { ListDirectory(); } public string[] ListDirectory() { var list = new List<string>(); var request = createRequest(TxtServer.Text, WebRequestMethods.Ftp.ListDirectory); using (var response = (FtpWebResponse)request.GetResponse()) { using (var stream = response.GetResponseStream()) { using (var reader = new StreamReader(stream, true)) { while (!reader.EndOfStream) { list.Add(reader.ReadLine()); } } } } return list.ToArray(); } private FtpWebRequest createRequest(string uri, string method) { var r = (FtpWebRequest)WebRequest.Create(uri); r.Credentials = new NetworkCredential(TxtUsername.Text, TxtPassword.Text); r.Method = method; return r; } 
+7
source share
5 answers

You can use this wrapper library .

Relevant Code:

  public string[] ListDirectory() { var list = new List<string>(); var request = createRequest(WebRequestMethods.Ftp.ListDirectory); using (var response = (FtpWebResponse)request.GetResponse()) { using (var stream = response.GetResponseStream()) { using (var reader = new StreamReader(stream, true)) { while (!reader.EndOfStream) { list.Add(reader.ReadLine()); } } } } return list.ToArray(); } 
+9
source

Here is a good helper for getting all the files and folders of an FTP directory:

 public static IEnumerable<string> GetFilesInFtpDirectory(string url, string username, string password) { // Get the object used to communicate with the server. var request = (FtpWebRequest)WebRequest.Create(url); request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; request.Credentials = new NetworkCredential(username,password); using (var response = (FtpWebResponse) request.GetResponse()) { using (var responseStream = response.GetResponseStream()) { var reader = new StreamReader(responseStream); while (!reader.EndOfStream) { var line = reader.ReadLine(); if (string.IsNullOrWhiteSpace(line) == false) { yield return line.Split(new[] { ' ', '\t' }).Last(); } } } } } 

Found here: http://www.snippetsource.net/Snippet/128/get-all-files-of-an-ftp-directory-in-c

+7
source

I found an answer that I experimented a bit, and now it displays the files in a list, thanks Robert Harvey ♦

 private void ConnectBtn_Click(object sender, EventArgs e) { ListDirectory(); } public string[] ListDirectory() { var list = listView1; var request = createRequest(TxtServer.Text, WebRequestMethods.Ftp.ListDirectory); using (var response = (FtpWebResponse)request.GetResponse()) { using (var stream = response.GetResponseStream()) { using (var reader = new StreamReader(stream, true)) { while (!reader.EndOfStream) { list.Items.Add(reader.ReadLine()); } } } } List<string> l = new List<string>(); return l.ToArray(); } private FtpWebRequest createRequest(string uri, string method) { var r = (FtpWebRequest)WebRequest.Create(uri); r.Credentials = new NetworkCredential(TxtUsername.Text, TxtPassword.Text); r.Method = method; return r; } 
+1
source

This code can be used to list ftp files.

 private void ftpFileRead() { FtpWebRequest Request = (FtpWebRequest)WebRequest.Create("your ftpAddress"); Request.Method = WebRequestMethods.Ftp.ListDirectory; Request.Credentials = new NetworkCredential(your ftp username,your ftp password); FtpWebResponse Response = (FtpWebResponse)Request.GetResponse(); Stream ResponseStream = Response.GetResponseStream(); StreamReader Reader = new StreamReader(ResponseStream); ListBox1.Items.Add(Response.WelcomeMessage); while (!Reader.EndOfStream)//Read file name { ListBox1.Items.Add(Reader.ReadLine().ToString()); } Response.Close(); ResponseStream.Close(); Reader.Close(); } 
+1
source

You can use this method.

  public static string[] GetFiles(string path, NetworkCredential Credentials, SearchOption searchOption) { var request = (FtpWebRequest)WebRequest.Create(path); request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; request.Credentials = Credentials; List<string> files = new List<string>(); using (var response = (FtpWebResponse)request.GetResponse()) { using (var responseStream = response.GetResponseStream()) { var reader = new System.IO.StreamReader(responseStream); while (!reader.EndOfStream) { var line = reader.ReadLine(); if (string.IsNullOrWhiteSpace(line) == false) { if (!line.Contains("<DIR>")) { string[] details = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); string file = line.Replace(details[0], "") .Replace(details[1], "") .Replace(details[2], "") .Trim(); files.Add(file); } else { if (searchOption == SearchOption.AllDirectories) { string dirName = line.Split( new string[] { "<DIR>" }, StringSplitOptions.RemoveEmptyEntries ).Last().Trim(); string dirFullName = String.Format("{0}/{1}", path.Trim('/'), dirName); files.AddRange(GetFiles(dirFullName, Credentials, searchOption)); } } } } } } return files.ToArray(); } 
0
source

All Articles