栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在FtpWebRequest之前检查FTP上是否存在文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在FtpWebRequest之前检查FTP上是否存在文件

var request = (FtpWebRequest)WebRequest.Create    ("ftp://ftp.domain.com/doesntexist.txt");request.Credentials = new NetworkCredential("user", "pass");request.Method = WebRequestMethods.Ftp.GetFileSize;try{    FtpWebResponse response = (FtpWebResponse)request.GetResponse();}catch (WebException ex){    FtpWebResponse response = (FtpWebResponse)ex.Response;    if (response.StatusCode ==        FtpStatusCode.ActionNotTakenFileUnavailable)    {        //Does not exist    }}

通常,在这样的代码中使用Exceptions功能是个坏主意,但是在这种情况下,我认为实用主义是一个胜利。与以这种方式使用异常相比,目录上的呼叫列表可能会导致FAR效率低下。

如果不是,请注意这不是一个好习惯!

编辑:“它对我有用!”

这似乎适用于大多数ftp服务器,但不是全部。某些服务器要求发送“ TYPE I”,然后SIZE命令才能起作用。有人认为应该按以下方式解决问题:

request.UseBinary = true;

不幸的是,这是一个设计限制(很大的错误!),除非FtpWebRequest正在下载或上传文件,否则它将不会发送“ TYPE
I”。请参阅此处的讨论和Microsoft的响应。

我建议改用以下WebRequestMethod,这对我测试过的所有服务器都有效,即使那些不会返回文件大小的服务器也是如此。

WebRequestMethods.Ftp.GetDateTimestamp


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/416826.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号