我想删除 FTP 服务器上名称包含特定字符串的所有文件。
例如,我在 FTP 上有这些文件:
pippo_1.jpg
pippo_2.jpg
pippo_3.jpg
pluto_1.jpg
我想删除所有包含 pippo
的文件。
如何通过一次操作删除所有这些文件?
谢谢!
最佳答案
.NET 框架中的 FTP 协议(protocol)的实现不允许在单个操作中执行此操作。
你必须列出远程目录,过滤你要删除的文件,然后一一删除。
如果您确实想在单个操作中执行此操作,则可以使用支持文件掩码操作的第三方库。例如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
关于vb.net - 删除名称包含字符串(匹配掩码)的 FTP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42188999/