gpt4 book ai didi

c# - 在单个 ftp 请求中创建一个包含子目录的目录?

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:45 24 4
gpt4 key购买 nike

关于如何在单个 ftp 请求中创建包含子目录的目录,我遇到了一个小问题

我有一个字符串s

    string s = "a/b/c/d"

注意:斜杠之间的单词是随机的,项目数未知。

如何在FTP服务器上创建目录a/b/c/d ????

我用来实现此目的的方法是拆分字符串并使用以下代码为每个部分创建一个文件夹:

    var ftpWebRequest = (FtpWebRequest)WebRequest.Create("ftp://domain.com/public_html/a");
ftpWebRequest.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
ftpWebRequest.Method = WebRequestMethods.Ftp.MakeDirectory;
ftpWebRequest.GetResponse();

然后我每次都重复一些代码,在 a 中创建 b 目录,然后在 b 中创建 c,然后在 c 中创建 d

我试着直接输入网址。喜欢:

    var ftpWebRequest = (FtpWebRequest)WebRequest.Create("ftp://doemin.com/public_html/a/b/c/d);

但它不起作用。

关于如何在单个请求中创建包含其他子目录的文件夹,是否有一种简短的方法?

最佳答案

如果您愿意使用像这样的更友好的库(免费和开源):

System.Net.FtpClient.dll

然后你可以写这样的代码(改编自他们的例子)

static ManualResetEvent m_reset = new ManualResetEvent(false);
void Main()
{
m_reset.Reset();
using (FtpClient ftp = new FtpClient())
{
ftp.Host = "yourFTPHost.com";
ftp.Credentials = new NetworkCredential("yourUserName", "yourPassword");
ftp.SetWorkingDirectory("/rootForTest");
if(ftp.DirectoryExists("test"))
ftp.DeleteDirectory("test", true);
ftp.BeginCreateDirectory("test/path/that/should/be/created", true,
new AsyncCallback(CreateDirectoryCallback), ftp);
m_reset.WaitOne();
ftp.Disconnect();
}
}
static void CreateDirectoryCallback(IAsyncResult ar)
{
FtpClient ftp = ar.AsyncState as FtpClient;
try
{
if (ftp == null)
throw new InvalidOperationException("The FtpControlConnection object is null!");
ftp.EndCreateDirectory(ar);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
m_reset.Set();
}
}

旁注:System.Net.FtpClient 需要完整的 NET 4.0 框架。 (客户资料还不够)

关于c# - 在单个 ftp 请求中创建一个包含子目录的目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14368852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com