我的FTP上传有问题,希望你能帮助我。我正在尝试创建文件夹,然后将文件上传到它们。我的程序应该做的是检查文件夹是否已经存在,如果没有,则创建一个之前已检查过名称的新文件夹。程序运行正常,但下面描述的错误除外。
我的问题:
我想上传一个名为ghandle
的文件夹 - >按预期工作。
之后,我想上传名为handle
的文件夹 - >不起作用,因为.Contains
方法检查FTP服务器上的文件夹,找到ghandle
并停止,因为ghandle
包含handle
。
还有其他选项,例如.Contains
,只检查整个单词或完全匹配吗?
这是我的源代码:
Dim dirname = Path.GetFileNameWithoutExtension(openFileDialogHtml.FileName) & "_files"
Dim ftp = "ftp://" & ftp_address.Text & "/"
Dim user = ftp_user.Text
Dim pass = ftp_password.Text
Dim request As Net.FtpWebRequest = Net.FtpWebRequest.Create(ftp)
Dim creds As Net.NetworkCredential = New Net.NetworkCredential(user, pass)
request.Credentials = creds
Dim resp As Net.FtpWebResponse = Nothing
request.Method = Net.WebRequestMethods.Ftp.ListDirectoryDetails
request.KeepAlive = True
Using resp
resp = request.GetResponse()
Dim sr As StreamReader = New StreamReader(resp.GetResponseStream(), System.Text.Encoding.ASCII)
Dim s As String = sr.ReadToEnd()
If Not s.Contains(dirname) Then
request = Net.FtpWebRequest.Create(ftp & dirname)
request.Credentials = creds
request.Method = Net.WebRequestMethods.Ftp.MakeDirectory
resp = request.GetResponse()
MsgBox("Created folder " & dirname)
Else
MsgBox("Folder " & dirname & " already exists!")
End If
End Using
提前致谢
答案 0 :(得分:0)
首先,使用ListDirectory
,而不是ListDirectoryDetails
。 ListDirectory
仅返回普通名称,足以达到您的目的且易于解析。
然后使用String.Split
method:
Dim names As String() =
sr.ReadToEnd().Split(New Char() {vbCr, vbLf}, StringSplitOptions.RemoveEmptyEntries)
使用IEnumerable.Contains
extension method检查给定的文件名:
If Not names.Contains(dirname) Then