我正在编写一个使用libcurl与Apache FtpServer连接的c ++程序。我最初使用LIST
命令来获取目录的内容,但是它给了我很多信息,但我不得不解析导致大量不必要开销的任何方式(特别是在我工作的时候)有数十万个文件)。另外我需要一个有效的时间戳,它给了我一个不包括年份的速记(所以1月1日我的计算机上的所有文件看起来都比过FTP服务器的过时)。我的解决方案是使用NLST
命令仅获取名称,然后使用MDTM
下载每个名称的时间戳。这很棒但是我遇到了无法判断文件是否是目录的主要问题。
我认为最简单的方法是使用权限查看第一个标志是否设置为d
。 FTP似乎没有此功能。有一种简单的方法可以判断文件名是目录还是文件?
答案 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