当此文件以点“.”开头时,C# 读取 ftp 中的文件(隐藏文件)

C# Read file in ftp when this file start with dot "." (hidden Files)

我需要读取 ftp 中的文件,但该文件以“.”开头(隐藏文件),例如 .teste.txt.

我尝试使用以下代码读取此文件:

 FtpWebRequest reqFTP;
 reqFTP = (FtpWebRequest)WebRequest.Create("ftp://" + strFTP + ":" + strPorta + strDiretorio);
 reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
 reqFTP.Credentials = new NetworkCredential(strUser, strPass);

 response = (FtpWebResponse)reqFTP.GetResponse();

 reader = new StreamReader(response.GetResponseStream());
 string line = reader.ReadLine();

您的问题可能与包含“.”的文件无关。或者不是,从代码的外观来看,我敢打赌问题是 strPortastrDiretorio.

之间缺少横线“/”

您还可以检查用于创建 WebRequest 的连接字符串是否有任何关于特殊字符的拼写错误,如果有,请尝试使用“\”转义 tehm,就像在文本“\”中使用新行一样n".

编辑

阅读评论后我发现您实际上是在尝试列出所谓的隐藏文件。在基于 UNIX 的系统中,“.”在文件名用于将该文件标记为隐藏之前。 这里的问题是您在 FTP 中用来连接的对象没有能力 show/list 隐藏文件,就像在另一个线程中那样:

我建议您使用用户 Jothi Prakash Anandan 提出的解决方案,如果您确实需要隐藏文件,请尝试其他库。

在这种情况下,我将“-al”放在最后 ftp url,使用此代码:

 var reqFTP = (FtpWebRequest)WebRequest.Create("ftp://" + strFTP + ":" + strPorta + strDiretorio + " -al");

reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
reqFTP.Credentials = new NetworkCredential(strUser, strPass);

response = (FtpWebResponse)reqFTP.GetResponse();

reader = new StreamReader(response.GetResponseStream());
string line = reader.ReadLine();