C#FTP,如何检查Path是文件还是目录?

Cha*_*mal 5 c# ftp file

我有一个包含一些FTP pathes的数组,如下所示:

"ftp // ip/directory/directory1",
"ftp // ip/directory/directory2",
"ftp // ip/directory/file.txt",
"ftp // ip/directory/directory3",
"ftp // IP /目录/ another_file.csv"

如何确定路径是文件还是目录?

提前致谢.

小智 5

使用LIST命令(可以参考RFC959)获取有关指定路径下的项目的详细信息.以FileZilla Server为例,LIST命令将返回标准LINUX权限格式,您可以在此处找到该格式.第一个字母表示请求的路径是文件还是目录.此外,还可以在此处找到用C#编写的简单库

  • 实际上它是如何回答这个问题的? (2认同)

小智 5

我有同样的问题。我根据休的回答进行了工作。您需要创建一个 FTPRequest,例如:

request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
Run Code Online (Sandbox Code Playgroud)

从 StreamReader 中抓取它并将其粘在一根绳子上

StreamReader reader = new StreamReader(responseStream);

            string directoryRaw = null;

            try { while (reader.Peek() != -1) { directoryRaw +=    reader.ReadLine() + "|"; } }
            catch (Exception ex) { Console.WriteLine(ex.ToString()); }
Run Code Online (Sandbox Code Playgroud)

当你打印它时,它看起来像:

|-rw-r--r-- 1 位用户 1699 2015 年 6 月 1 日 404.shtml

|drwxr-xr-x 2 用户 user 4096 Sep 8 19:39 cgi-bin

|drwxr-xr-x 2 用户 user 4096 11 月 3 日 10:52 css

它们由 | 分隔。这将是分割字符串的分隔符

如果它以 ad 开头而不是 - 则它是一个目录,否则它是一个文件。

这些在文件名之前的大小都相同,因此为每个字符串创建一个新字符串,从位置 62 开始到结束,这将是文件名。

希望能帮助到你


Jer*_*Gee 4

没有直接的办法。

您可以间接地假设文件名没有句点“.”。是目录,但这并不总是正确的。

最好是仔细编写使用这些路径的代码,以便将路径视为目录,然后如果 FTP 服务器报告错误,则将其视为文件。