In this article we are going to see how to fetch directory and file details from the FTP path.
Step 1: Used Namespaces:
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Web;
Step 2: Usage:
GetListDirectoryDetails ("ftp://208.43.121.51/", "Username", "Password");
Step 3: Creating FTP request by specifying file name and path:
public static FtpWebRequest CreateFTPRequest(string fullFtpPath)
{
return (FtpWebRequest)FtpWebRequest.Create(new Uri(fullFtpPath));
}
Step 4: Setting User Name and Password for FTP path:
public static NetworkCredential CreateNetworkCredentials(string ftpUserID, string
ftpPassword)
{
return new NetworkCredential(ftpUserID, ftpPassword);
}
Step 5: Getting current response if any error occurs:
public static HttpResponse GetHttpResponse()
{
return HttpContext.Current.Response;
}
Step 6: Setting of FTP request:
public static FtpWebRequest GetFTPWebRequest(string fullFtpPath,
string ftpUserID, string ftpPassword)
{
FtpWebRequest reqFTP = CreateFTPRequest(fullFtpPath);
reqFTP.Credentials = CreateNetworkCredentials(ftpUserID, ftpPassword);
reqFTP.Method = WebRequestMethods.Ftp. ListDirectoryDetails;
reqFTP.UseBinary = true; // Specify the data transfer type.
return reqFTP;
}
Step 7: Used to get the list directory details as an Array:
public static string[] GetListDirectoryDetails(string fullFtpPath, string ftpUserID, string ftpPassword)
{
//Create a Ftp Web request.
FtpWebRequest fwr = GetFTPWebRequest(fullFtpPath, ftpUserID, ftpPassword);
//Getting Response from the Request.
WebResponse response = fwr.GetResponse();
//Used to get all the File as list with details.
return GetFilesDetailList(response);
}
Step 8: Used to get the entire File as a list with details:
public static string[] GetFilesDetailList(WebResponse response)
{
string[] files;
try
{
//Reading the response.
StreamReader reader = new StreamReader(response.GetResponseStream());
string line = reader.ReadLine();
StringBuilder result = new StringBuilder();
while (line != null)
{
result.Append(line);
result.Append("\n");
line = reader.ReadLine();
}
result.Remove(result.ToString().LastIndexOf("\n"), 1);
reader.Close();
response.Close();
files = result.ToString().Split('\n');
}
catch (Exception ex)
{
files = null;
GetHttpResponse().Write(ex.Message + " Retrieving File Error");
}
return files;
}
Step 9: COPY & PASTE Code Snippet
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Web;
namespace ApplicationClassLibrary
{
class FTPDirectoryList
{
//Used to get list directory details.
public static string[] GetListDirectoryDetails(string fullFtpPath, string ftpUserID, string ftpPassword)
{
//Create a Ftp Web request.
FtpWebRequest fwr = GetFTPWebRequest(fullFtpPath, ftpUserID, ftpPassword);
//Getting Response from the Request.
WebResponse response = fwr.GetResponse();
//Used to get all the File as list with details.
return GetFilesDetailList(response);
}
//Setting of FTP request
public static FtpWebRequest GetFTPWebRequest(string fullFtpPath,
string ftpUserID, string ftpPassword)
{
FtpWebRequest reqFTP = CreateFTPRequest(fullFtpPath);
reqFTP.Credentials = CreateNetworkCredentials(ftpUserID, ftpPassword);
reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
reqFTP.UseBinary = true; // Specify the data transfer type.
return reqFTP;
}
//Creating FTP request by specifying file name and path
public static FtpWebRequest CreateFTPRequest(string fullFtpPath)
{
return (FtpWebRequest)FtpWebRequest.Create(new Uri(fullFtpPath));
}
//Setting UserName and Password for FTP path.
public static NetworkCredential CreateNetworkCredentials(string ftpUserID, string ftpPassword)
{
return new NetworkCredential(ftpUserID, ftpPassword);
}
//Used to get all the File as list with details.
public static string[] GetFilesDetailList(WebResponse response)
{
string[] files;
try
{
//Reading the response.
StreamReader reader = new StreamReader(response.GetResponseStream());
string line = reader.ReadLine();
StringBuilder result = new StringBuilder();
while (line != null)
{
result.Append(line);
result.Append("\n");
line = reader.ReadLine();
}
result.Remove(result.ToString().LastIndexOf("\n"), 1);
reader.Close();
response.Close();
files = result.ToString().Split('\n');
}
catch (Exception ex)
{
files = null;
GetHttpResponse().Write(ex.Message + " Retrieving File Error");
}
return files;
}
//Gettting Current Response to If any error occurs.
public static HttpResponse GetHttpResponse()
{
return HttpContext.Current.Response;
}
}
}
Thanks for reading this article. Have a nice day.