1

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

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

4

1 回答 1

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
于 2012-07-14T02:04:07.910 回答