(4)改变目录
连接建立后,可以改变当前FTP会话所在的目录。对于已知绝对路径的情况下,可以直接调用ChangeDir(const ADirName: string)方法来转换目录,ADirName表示服务器上的文件系统目录,另外还可以调用ChangeDirUp回到上级目录。
如果未知路径,则可以通过List(ADest: TStrings; const ASPecifier: string; const ADetails: boolean)过程获取远程服务器的当前目录结构,此时必须设定TransferType为ftASCII(ASCII模式),其中:ADest保存当前目录结构,可以在后续程序中调用该列表。另外可以通过RetrieveCurrentDir方法获取当前目录名。
过程说明:
procedure ChangeDir(const ADirName: string); |
改变工作目录
属性
远程服务器的目录描述
说明:该过程实际上是实现了FTP CWD命令。
到上一级目录
function RetrieveCurrentDir: string; |
该函数返回当前目录名
procedure List(ADest: TStrings; const ASpecifier: string; const ADetails: boolean); |
列出当前目录所有文件和子目录及其属性
参数:
保存文件及子目录的返回结果
const ASpecifier: string = '' |
文件掩码,用于列出符合条件的文件
const ADetails: boolean = true |
包含文件和子目录属性
property DirectoryListing: TIdFTPListItems; |
返回文件及目录结构的列表
示例代码:
LS := TStringList.Create;
try
IdFTP1.ChangeDir(DirName);
IdFTP1.TransferType := ftASCII;
CurrentDirEdit.Text := IdFTP1.RetrieveCurrentDir;
DirectoryListBox.Items.Clear;
IdFTP1.List(LS);
DirectoryListBox.Items.Assign(LS);
if DirectoryListBox.Items.Count > 0 then
if AnsiPos('total', DirectoryListBox.Items[0]) > 0 then DirectoryListBox.Items.Delete(0);
finally
LS.Free;
end; |