Back to product page

DeleteFiles method

Delete multiple files in a sequence, recursive.




  • Basic
object.DeleteFiles [RemotePath], [MaxLevel]
The DeleteFiles(object,RemotePath,MaxLevel) syntax has these parts:
objectAn expression evaluating to an object of type wodFtpDLX.
RemotePathOptional. A Variant value. Full path to file on remote server that should be deleted.
MaxLevelOptional. A Variant value.


This method will try to delete complete directory structure on the server. You need to specify RemotePath that determines location from where files and directories are deleted.

wodFtpDLX will go up to MaxLevel deep into recursion. Default value is 5 - meaning up to 5 subdirectory levels will be deleted. You can specify any value for MaxLevel. If you specify 0, that means that no restriction exists for recursion depth - this is dangerous setting that could cause infinite loops to be created if remote system has symbolic links pointing back to parent folders on remote system!

Before each item is deleted, LoopItem event will be fired, specifying remote file/folder name (including full path), type of the item (file/folder/symbolic link) and will allow you to Skip the item so it is not deleted at all. Make sure your logic for setting Skip = True is correct - if you skip deletion of the file and then try to delete it's parent directory, more errors can occur. Since DeleteFiles does not support wildcards (for example, you cannot specify "*.TXT" in DeleteFiles call), LoopItem is a place to determine if certain item matches your wildcard expression (if you have any), so you can skip files that doesn't match your criteria.

If an errors occurs during deletion, LoopError event is fired holding error number and error description of the error. If you leave ErrorCode argument in LoopError event as is - DeleteFiles operation will be aborted. If you change ErrorCode value in LoopError event to 0, then DeleteFiles operation will continue (ignoring the error) normally.

Please note that using DeleteFiles in blocking environment where events are not available is almost impossible to use - simply because first error that occurs may abort the operation, and there is no way to ignore the error (since you don't have access to LoopError event).

Do not forget that RemotePath should always specify full absolute path (i.e. /home/joe/something) instead of relative path (i.e. joe/something).