2017-02-12 59 views

回答

2

在.NET框架FTP協議的任何實現允許這種在單個操作中。

你要列出遠程目錄,過濾你想刪除一個刪除一個文件。


如果你真的想這樣做在一個單一的操作,你必須使用一個第三方庫,支持與文件掩碼操作。例如WinSCP .NET assembly允許這與它Session.RemoveFiles method

Dim sessionOptions As New SessionOptions 
With sessionOptions 
    .Protocol = Protocol.Ftp 
    .HostName = "ftp.example.com" 
    .UserName = "username" 
    .Password = "password" 
End With 

Using session As New Session 
    session.Open(sessionOptions) 
    session.RemoveFiles("/remote/path/pippo*").Check() 
End Using 

(我的WinSCP的作者)


如果你不希望使用第三方庫,做如上建議:

Dim url As String = "ftp://ftp.example.com/remote/path/" 
Dim credentials As NetworkCredential = New NetworkCredential("username", "password") 

Dim listRequest As FtpWebRequest = WebRequest.Create(url) 
listRequest.Method = WebRequestMethods.Ftp.ListDirectory 
listRequest.Credentials = credentials 

Using listResponse As FtpWebResponse = listRequest.GetResponse(), 
     listStream As Stream = listResponse.GetResponseStream(), 
     listReader As StreamReader = New StreamReader(listStream) 
    While Not listReader.EndOfStream 
     Dim filename As String = listReader.ReadLine() 

     If filename.StartsWith("pippo") Then 
      Dim deleteRequest As FtpWebRequest = WebRequest.Create(url + filename) 
      deleteRequest.Method = WebRequestMethods.Ftp.DeleteFile 
      deleteRequest.Credentials = credentials 
      deleteRequest.GetResponse() 
     End If 
    End While 
End Using 
+0

我試過用WinSCP解決方案,當我打開連接時,我收到這個錯誤: 連接失敗。連接失敗。 所有憑據都是正確的。我嘗試連接WinSCP.exe,它完美的工作。 我認爲這個問題與傳輸協議有關。 你有什麼建議嗎? 謝謝! @MartinPrikryl –

+0

你是怎麼連接winscp.exe的?使用腳本或GUI?如果腳本,你使用了什麼命令?如果GUI,你選擇了什麼協議?您可以使用WinSCP GUI [爲您生成代碼模板](https://winscp.net/eng/docs/ui_generateurl#code)。 –

相關問題