判断文件是否是FTP服务器上的目录

时间:2012-07-14 00:09:56

标签: c++ c ftp libcurl ftp-server

我正在编写一个使用libcurl与Apache FtpServer连接的c ++程序。我最初使用LIST命令来获取目录的内容,但是它给了我很多信息,但我不得不解析导致大量不必要开销的任何方式(特别是在我工作的时候)有数十万个文件)。另外我需要一个有效的时间戳,它给了我一个不包括年份的速记(所以1月1日我的计算机上的所有文件看起来都比过FTP服务器的过时)。我的解决方案是使用NLST命令仅获取名称,然后使用MDTM下载每个名称的时间戳。这很棒但是我遇到了无法判断文件是否是目录的主要问题。

我认为最简单的方法是使用权限查看第一个标志是否设置为d。 FTP似乎没有此功能。有一种简单的方法可以判断文件名是目录还是文件?

1 个答案:

答案 0 :(得分:1)

您可以尝试在文件上使用CWD命令来测试它是否是目录。但失败可能意味着缺少权限,因此您需要检查错误代码。例如:

ftp> cd atom.xml
550 Can't change directory to atom.xml: Not a directory

或者,您可以在要测试的文件上再次使用NLST命令。如果它是普通文件,您将只返回文件名。否则,您将获得目录的内容列表。

ftp> nlist atom.xml
200 PORT command successful
150 Connecting to port 53912
atom.xml
226 1 matches total

ftp> mkdir foo
257 "foo" : The directory was successfully created
ftp> nlist foo
200 PORT command successful
150 Connecting to port 53928
226 0 matches total
相关问题