当此文件以点“。”开头时,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】:
您的问题可能与包含“。”的文件无关。与否,从代码的外观来看,我敢打赌,问题是strPorta
和strDiretorio
之间缺少一个条“/”。
您还可以检查用于创建 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 中读取文件(隐藏文件)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Apache 配置:正则表达式禁用对以点开头的文件/目录的访问