c# - 删除远程文件?

标签 c#

我有要删除的文件。连接可以来自文件共享、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;
    }
}

FtpFile 已成功删除。 WebRequestMethods.Http 不包含 DeleteFile。

所以我的问题是,如何从此 URI 中删除文件?

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;
}

关于c# - 删除远程文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5337280/

相关文章:

c# - IAudioSessionControl2 出现问题,使 WebBrowser 控件静音

c# - sqlite-net 无法识别父类的主键

c# - WCF 客户端不考虑主机地址

c# - 将参数从 aspx 传递到 javascript 问题

c# - 在linq中以更新模式选择记录

c# - 检查信号量的每个线程是否已完成

c# - CheckedListBox - 如何以编程方式确保在任何给定时间只能选中一项?

c# - 如何获取访问 token ? (Reddit API)

c# - 合并重叠范围的算法

c# - 如何从数据库列文件路径制作 TreeView