2012-07-14 117 views
1

我在寫一個C++程序,它使用libcurl與Apache FtpServer進行接口連接。我最初使用LIST命令來獲取目錄的內容,但它給了我很多我沒有的信息,但必須解析導致很多不必要的開銷的任何方式(特別是當我與數十萬人一起工作時的文件)。此外,我需要一個有效的時間戳,它給了我一個不包括年份的簡寫(所以在1月1日,我的計算機上的所有文件都比FTP服務器看起來過時了)。我的解決方案是使用NLST命令獲取名稱,然後使用MDTM下載每個的時間戳。這工作真棒,但後來我遇到了不能分辨文件是否是目錄的主要問題。判斷文件是否是FTP服務器上的目錄

我在想最簡單的方法是使用權限來查看第一個標誌是否設置爲d。 FTP似乎沒有此功能。有沒有簡單的方法來判斷文件名是目錄還是文件?

回答

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 
+0

不是我正在尋找的答案,但它似乎是唯一的解決方案。謝啦。 – retrohacker 2012-07-14 03:19:55

相關問題