在组合框中列出FTP内容
本文关键字:FTP 内容 组合 | 更新日期: 2023-09-27 18:27:22
首先,我的程序正在做什么。我有一个名为DirListing的组合框,我有连接到服务器的FTP代码。我有一个"更新列表"按钮,这样一旦你点击它,它就会列出目录中的所有内容。我想列出目录,但在组合框中。这是我的东西。
onClick的代码。
private void updateList_Click(object sender, EventArgs e)
{
string[] listDir = ftpClient.directoryListSimple("/");
for (int i = 0; i < listDir.Count(); i++)
{
DirListing.Items.AddRange(listDir);
}
}
这是目录ListSimple
public string[] directoryListSimple(string directory)
{
try
{
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + directory);
ftpRequest.Credentials = new NetworkCredential(user, pass);
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = true;
ftpRequest.KeepAlive = true;
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpStream = ftpResponse.GetResponseStream();
StreamReader ftpReader = new StreamReader(ftpStream);
string directoryRaw = null;
try { while (ftpReader.Peek() != -1) { directoryRaw += ftpReader.ReadLine() + "|"; } }
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
ftpReader.Close();
ftpStream.Close();
ftpResponse.Close();
ftpRequest = null;
try { string[] directoryList = directoryRaw.Split("|".ToCharArray()); return directoryList; }
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
}
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
return new string[] { "" };
}
当然还有其他FTP信息,比如onClick上面的实际登录信息。
ftp ftpClient = new ftp(@"server", "user", "password");
每当我调试程序并单击"更新列表"按钮时,它所做的就是在组合框中添加一个空格。
有人能帮助我实现在组合框中列出目录中的文件的目标吗?
首先,我没有得到您的第一个代码。如果我理解正确的话,你有一个字符串数组,用这个旧样式(i=0;ilt x;i++)迭代每个数组,每次迭代时你都会把整个数组添加到你的组合框中,这意味着如果你有10个字符串,你会把它们添加10次。。。不确定这是你想要的。这应该有效:
private void updateList_Click(object sender, EventArgs e)
{
DirListing.Items.AddRange(ftpClient.directoryListSimple("/"));
}
其次,调试时,字符串数组是否已填充?我不这么认为,对我来说,问题来自于你检索文件列表的方式。你在ftp请求过程中有什么异常吗?
如果您在没有try/catch的情况下运行此代码以查看异常:
public string[] directoryListSimple(string directory)
{
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + directory);
ftpRequest.Credentials = new NetworkCredential(user, pass);
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = true;
ftpRequest.KeepAlive = true;
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpStream = ftpResponse.GetResponseStream();
StreamReader ftpReader = new StreamReader(ftpStream);
string directoryRaw = null;
while (ftpReader.Peek() != -1)
{
directoryRaw += ftpReader.ReadLine() + "|";
}
ftpReader.Close();
ftpStream.Close();
ftpResponse.Close();
ftpRequest = null;
return directoryRaw.Split("|".ToCharArray());
}