C# 空FTP目录中的两个条目
我正在尝试创建一个列表,列出在FTP服务器上的文件夹中找到的所有文件名。完整目录与登录凭据一起保存在设置数据库表中。它连接到FTP区域很好,我可以上传/下载文件 这是我从文件夹中获取文件的代码C# 空FTP目录中的两个条目,c#,.net,ftp,ftpwebrequest,C#,.net,Ftp,Ftpwebrequest,我正在尝试创建一个列表,列出在FTP服务器上的文件夹中找到的所有文件名。完整目录与登录凭据一起保存在设置数据库表中。它连接到FTP区域很好,我可以上传/下载文件 这是我从文件夹中获取文件的代码 lstFiles = new List<string>(); string remoteFTPPath = ftpLocation; var request = (FtpWebRequest)WebRequest.Create(remoteFTPPath); request.Method
lstFiles = new List<string>();
string remoteFTPPath = ftpLocation;
var request = (FtpWebRequest)WebRequest.Create(remoteFTPPath);
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
request.Proxy = null;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
List<string> directories = new List<string>();
string line = reader.ReadLine();
while (!string.IsNullOrEmpty(line))
{
directories.Add(line);
line = reader.ReadLine();
}
reader.Close();
lstFiles=新列表();
字符串remoteFTPPath=ftpLocation;
var request=(FtpWebRequest)WebRequest.Create(remoteFTPPath);
request.Method=WebRequestMethods.Ftp.ListDirectoryDetails;
request.Credentials=新的网络凭据(ftpUsername、ftpPassword);
Proxy=null;
FtpWebResponse response=(FtpWebResponse)request.GetResponse();
Stream responseStream=response.GetResponseStream();
StreamReader=新的StreamReader(responseStream);
列表目录=新列表();
字符串行=reader.ReadLine();
而(!string.IsNullOrEmpty(line))
{
目录。添加(行);
line=reader.ReadLine();
}
reader.Close();
我遇到的问题是,当前我试图搜索的文件夹是空的,但它找到了2个文件
为什么会这样
remoteFTPPath
中的值为ftp://ftp.myArea.co.uk/myServer.co.uk/System-Files/
这是我在FileZilla中打开它时的文件夹-它肯定是一个空文件夹
如何查看系统文件中的所有文件并将其放入列表中
FileZilla日志:
状态:已登录状态:正在检索“/myArea.co.uk”的目录列表…
状态:“/myArea.co.uk”目录列表成功
状态:正在检索“/myArea.co.uk/System文件的目录列表”…
状态:“/myArea.co.uk/System Files”目录列表成功 在C#应用程序上测试相同的代码时,
Network.log
文件输出如下
系统.Net信息:0:[6132]FtpWebRequest#60068066::.ctor()系统.Net信息:0:[6132]当前操作系统安装类型为“客户端”。
系统.Net信息:0:[6132]FtpWebRequest#60068066::GetResponse(方法=列表)。
系统.Net信息:0:[6132]FtpControlStream#34640832-已创建从xxx.xxx.x.xx:YYYY到xxx.xxx.x:YY的连接。
系统.Net信息:0:[6132]将FTPWebreRequest#60068066与FtpControlStream#34640832关联
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[220矩阵FTP服务器就绪。
220这是一个专用系统-无匿名登录
此服务器上也欢迎220-IPv6连接。
220请注意:您网站的文件必须存储在htdocs目录下。]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[用户myUser]
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[331用户myUser确定。需要密码]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[PASS*********]
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[230正常。当前目录为/]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[OPTS utf8 on]
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[500未知命令]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[PWD]
System.Net信息:0:[6132]FtpControlStream#34640832-收到的响应[257”/“是您的当前位置]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[CWD/myArea.co.uk/System Files]
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[250确定。当前目录为/myArea.co.uk/System Files]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[类型I]
System.Net信息:0:[6132]FtpControlStream#34640832-收到的响应[200类型现在是8位二进制]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[PASV]
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[227进入被动模式(213171193,5117157)]
系统.Net信息:0:[6132]FtpControlStream#34640832-发送命令[列表]
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[150接受的数据连接]
系统.Net信息:0:[6132]FtpControlStream#34640832-收到响应[226-ASCII
226选项:-a-l
总共226个匹配项]
系统.Net信息:0:[6132]FtpWebRequest#60068066::(正在释放FTP连接#34640832。)
系统.Net信息:0:[14644]服务点#33675143-关闭为空闲
许多FTP服务器在目录列表中返回
和。
项,类似于*nixls-a
或Windowsdir
命令。这些分别是对目录本身和父目录的引用
对于任何目录,甚至是空目录(有时[例如,在Windows服务器上],根文件夹除外),您都会得到这些文件
如果您不想要这些,您需要在代码中过滤掉它们。FileZilla的功能也很明确。在FileZilla中,如果您选中“服务器->强制显示隐藏文件”选项,您还会看到其他内容吗?@steve16351不,没有。我想它们可能是系统/操作系统文件或无法查看的东西。我相信您会发现。(当前目录)和。。(家长名录)是的,谢谢,我在进一步调查后发现了这个。我已经对代码进行了调整,现在它可以找到我需要的文件,并根据需要将它们放入列表中。谢谢你的帮助。