判断文件是否为FTP服务器上的目录
Tell if a file is a directory on an FTP server
我正在编写一个c++程序,该程序使用libcurl与Apache FtpServer接口。我最初使用LIST
命令来获取目录的内容,但它给了我很多信息,我没有,但必须以任何方式进行解析,这会导致大量不必要的开销(尤其是当我处理数十万个文件时)。此外,我需要一个有效的时间戳,它给了我一个不包括年份的简写(所以在1月1日,我电脑上的所有文件与FTP服务器相比都显得过时了)。我的解决方案是使用NLST
命令只获取名称,然后使用MDTM
下载每个名称的时间戳。这非常有效,但后来我遇到了一个主要问题,无法判断文件是否是目录。
我认为最简单的方法是使用权限查看第一个标志是否设置为d
。FTP似乎没有此功能。有没有一种简单的方法可以判断文件名是目录还是文件?
您可以尝试在文件上使用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
相关文章:
- FTP服务器试图登录时奇怪的响应
- 连接到 FTP 服务器并访问文件
- 如何在不保存文件的情况下制作打印屏幕并将其发送到FTP服务器?我的工作代码将文件保存到HDD
- 在 FTP 服务器中正确实现 LIST 命令
- Internet Connect无法通过FTP代理连接到FTP服务器
- C 服务器 - 客户lient FTP仿真
- FTP服务器端口处于主动模式和被动模式
- 使用Libcurl从FTP服务器下载多个文件
- C++:如何使用libcurl检查FTP服务器上是否存在目录
- 判断文件是否为FTP服务器上的目录
- 动态分配内存以接收FTP服务器的LIST响应时的SIGSEGV
- 创建虚假 ftp 服务器的程序
- 如何避免 QNetwork请求将 RHELP 动词发送到 FTP 服务器
- FTP 服务器无法正确处理'rn'
- QNetworkAccessManager上载到本地FTP服务器
- 用于RPi2的UWP FTP服务器
- 如何在ftp服务器/客户端将数据发送到TCP套接字之前从其获取数据
- 如何获得ftp服务器中所有文件和文件夹的列表(c++)
- 终止ftp服务器上的数据传输时的客户端行为
- 为FTP服务器制作文件-当头文件被修改时编译