当此文件以点“。”开头时,C# 在 ftp 中读取文件(隐藏文件)[重复]

Posted

技术标签:

【中文标题】当此文件以点“。”开头时,C# 在 ftp 中读取文件(隐藏文件)[重复]【英文标题】:C# Read file in ftp when this file start with dot "." (hidden Files) [duplicate] 【发布时间】:2020-07-28 10:12:00 【问题描述】:

我需要在 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();

【问题讨论】:

“读取文件”是什么意思?您想阅读文件内容还是只在目录列表中查看? + 你说的“但是线路来了”是什么意思 见FtpWebRequest ListDirectory does not return hidden files。 感谢您的帮助,我昨天看到了这个链接并解决了我的问题。 【参考方案1】:

在这种情况下,我将“-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();

【讨论】:

使用-l 的标准方法是使用ListDirectoryDetails,而不是ListDirectory。然后你只需要添加-a【参考方案2】:

您的问题可能与包含“。”的文件无关。与否,从代码的外观来看,我敢打赌,问题是strPortastrDiretorio 之间缺少一个条“/”。

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

编辑

阅读评论后,我突然想到您实际上是在尝试列出所谓的隐藏文件。在基于 UNIX 的系统中,“.”在文件名用于将该文件标记为隐藏之前。 这里的问题是,您在 FTP 中用于连接的对象无法像在其他线程中那样显示/列出隐藏文件:

FtpWebRequest ListDirectory does not return hidden files

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

【讨论】:

在这种情况下我可以在 ftp 中连接,这个 ftp 有很多文件,但只有文件以“。”开头我无法得到。例如:我有 2 个文件,文件 1 test.txt 和文件 2 .test.txt,我只能得到 test.txt。谢谢你的帮助

以上是关于当此文件以点“。”开头时,C# 在 ftp 中读取文件(隐藏文件)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何创建文件名以点开头的 zip 文件

如何以点开头的rsync文件夹?

Apache 配置:正则表达式禁用对以点开头的文件/目录的访问

apache_conf 阻止访问隐藏文件(文件名以点开头)

C# iTextSharp PDFReader 总是从 PDF 的开头读取

touch .filename未隐藏文件