编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

在C#中,使用FtpWebRequest类来操作FTP服务器上的文件

wxchong 2024-08-10 22:26:21 开源技术 26 ℃ 0 评论

在C#中,你可以使用System.Net命名空间下的FtpWebRequest类来操作FTP服务器上的文件。下面是一些基本的示例,展示了如何连接到FTP服务器,上传文件,下载文件,列出目录中的文件,以及删除文件。

连接到FTP服务器

首先,你需要创建一个FtpWebRequest对象,并设置其属性以连接到FTP服务器。

csharpstring ftpServer = "ftp://example.com";
string userName = "username";
string password = "password";

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpServer);
request.Method = WebRequestMethods.Ftp.ListDirectory;

request.Credentials = new NetworkCredential(userName, password);

try
{
    FtpWebResponse response = (FtpWebResponse)request.GetResponse();
    // 处理响应
    response.Close();
}
catch (Exception ex)
{
    Console.WriteLine("Error: " + ex.Message);
}

上传文件到FTP服务器

要上传文件到FTP服务器,你需要设置WebRequest的Method属性为WebRequestMethods.Ftp.UploadFile,并提供本地文件的路径。

csharpstring localFilePath = @"C:\local\path\to\file.txt";
string remoteFilePath = "/remote/path/to/file.txt";

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpServer + remoteFilePath);
request.Method = WebRequestMethods.Ftp.UploadFile;

request.Credentials = new NetworkCredential(userName, password);

// 转换为字节数组
byte[] fileContents = File.ReadAllBytes(localFilePath);

request.ContentLength = fileContents.Length;

using (Stream requestStream = request.GetRequestStream())
{
    requestStream.Write(fileContents, 0, fileContents.Length);
}

try
{
    FtpWebResponse response = (FtpWebResponse)request.GetResponse();
    Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
    response.Close();
}
catch (Exception ex)
{
    Console.WriteLine("Upload File Error: " + ex.Message);
}

从FTP服务器下载文件

要下载FTP服务器上的文件,你需要设置WebRequest的Method属性为WebRequestMethods.Ftp.DownloadFile,并提供远程文件的路径。

csharpstring remoteFilePath = "/remote/path/to/file.txt";
string localFilePath = @"C:\local\path\to\file.txt";

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpServer + remoteFilePath);
request.Method = WebRequestMethods.Ftp.DownloadFile;

request.Credentials = new NetworkCredential(userName, password);

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

using (Stream responseStream = response.GetResponseStream())
using (FileStream localFileStream = new FileStream(localFilePath, FileMode.Create))
{
    responseStream.CopyTo(localFileStream);
}

response.Close();
Console.WriteLine("File downloaded");

列出FTP服务器目录中的文件

要列出FTP服务器目录中的文件,你需要设置WebRequest的Method属性为WebRequestMethods.Ftp.ListDirectory。

csharpstring remoteDirectory = "/remote/directory/";

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpServer + remoteDirectory);
request.Method = WebRequestMethods.Ftp.ListDirectory;

request.Credentials = new NetworkCredential(userName, password);

try
{
    FtpWebResponse response = (FtpWebResponse)request.GetResponse();
    Stream responseStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(responseStream);

    while (!reader.EndOfStream)
    {
        Console.WriteLine(reader.ReadLine());
    }

    reader.Close();
    response.Close();
}
catch (Exception ex)
{
    Console.WriteLine("List Directory Error: " + ex.Message);
}

从FTP服务器删除文件

要从FTP服务器删除文件,你需要设置WebRequest的Method属性为WebRequestMethods.Ftp.DeleteFile,并提供要删除文件的路径。

csharpstring remoteFilePath = "/remote/path/to/file.txt";

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpServer + remoteFilePath);
request.Method = WebRequestMethods.Ftp.DeleteFile;

request.Credentials = new NetworkCredential(userName, password);

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表