2015-10-05 4 views
1

Есть на вопросы вызвать не может найти его:Удалить каталог со сборкой WinSCP .NET

  1. Как проверить, если каталог содержит что-нибудь, например, папку или файлы, независимо ... или это пустая

  2. Как удалить пустой каталог?

  3. Как удалить каталог, даже если есть контент.

Например, для создания каталога Я использую ниже функции:

Public Sub CreateDirectory(path As String) 
    If session IsNot Nothing Then 
     session.CreateDirectory(path) 
    End If 
End Sub 

файл журнала в requested in comment:

> 2015-10-05 11:11:13.010 MLST /\MainFolder 2014\ANIA 
< 2015-10-05 11:11:13.104 550 MLST command failed: No such file or directory. 
. 2015-10-05 11:11:13.104 Could not retrieve file information 
< 2015-10-05 11:11:13.104 Script: Can't get attributes of file '\MainFolder 2014\ANIA'. 
< 2015-10-05 11:11:13.104 Script: Could not retrieve file information 

< 2015-10-05 11:11:13.104 MLST command failed: No such file or directory. 
. 2015-10-05 11:11:13.104 Script: Failed 

ответ

1

проверить, если есть какие-либо файлы в каталоге , используйте Session.EnumerateRemoteFiles method:

Dim anyFile As Boolean = 
    mySession.EnumerateRemoteFiles(
     path, Nothing, EnumerationOptions.MatchDirectories).Any() 

Поддерживается Session.EnumerateRemoteFiles с WinSCP 5.9.


В старых версиях WinSCP, содержимое каталога списка с помощью Session.ListDirectory и отфильтровать .. и . записей:

Dim anyFile As Boolean = 
    mySession.ListDirectory(path).Files. 
    Where(Function(file) (file.Name <> "..") And (file.Name <> ".")). 
    Any() 

Чтобы удалить любой каталог, будь то пустой или нет, использование Session.RemoveFiles:

session.RemoveFiles(RemotePath.EscapeFileMask(path)) 
+0

этот не работает: sessi on.RemoteFiles (session.EscapeFileMask (путь)). Это не удаление самой папки, а только настройка внутри этой папки. – Arie

+0

, либо иногда не удаляя файлы. – Arie

+1

Каково точное значение 'path', которое вы используете? –