我有我要删除的文件.连接可以来自文件共享,http和ftp.
//mytest//delete//filename.bin ftp://mytest/delete/filename.bin http://mytest/delete/filename.bin
这是我做的:
Uri target = new Uri(@"ftp://mytest/delete/filename.bin"); FileInfo fi = new FileInfo(target.AbsoluteUri); fi.Delete();
我得到的错误是:
The given paths format is not supported
我已经为此任务创建了一个简单的代码(基于线程响应).
这是输入:
Uri target = new Uri(@"ftp://tabletijam/FileServer/upload.bin"); Uri target = new Uri(@"http://tabletijam/FileServer/upload.bin"); Uri target = new Uri(@"\\tabletijam\FileServer\upload.bin");
这是代码:
bool DeleteFileOnServer(Uri serverUri) { if (serverUri.Scheme == Uri.UriSchemeFtp) { FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri); request.Method = WebRequestMethods.Ftp.DeleteFile; FtpWebResponse response = (FtpWebResponse)request.GetResponse(); lblStatus.Content = response.StatusDescription; response.Close(); return true; } else if (serverUri.Scheme == Uri.UriSchemeFile) { System.IO.File.Delete(serverUri.LocalPath); return true; } else if (serverUri.Scheme == Uri.UriSchemeHttp || serverUri.Scheme == Uri.UriSchemeHttps) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serverUri); request.Method = WebRequestMethods.Http.DeleteFile; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); lblStatus.Content = response.StatusDescription; response.Close(); return true; } else { lblStatus.Content = "Unknown uri scheme."; return false; } }
Ftp和文件已成功删除. WebRequestMethods.Http不包含DeleteFile.
http://tabletijam/FileServer/upload.bin
解决方法
因为FileInfo仅适用于本地文件.对于每个连接,您将需要一个特殊的实现.
对于FTP:(example from MSDN)
public static bool DeleteFileOnServer(Uri serverUri) { // The serverUri parameter should use the ftp:// scheme. // It contains the name of the server file that is to be deleted. // Example: ftp://contoso.com/someFile.txt. // if (serverUri.Scheme != Uri.UriSchemeFtp) { return false; } // Get the object used to communicate with the server. FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri); request.Method = WebRequestMethods.Ftp.DeleteFile; FtpWebResponse response = (FtpWebResponse) request.GetResponse(); Console.WriteLine("Delete status: {0}",response.StatusDescription); response.Close(); return true; }