加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – FTP操作后清理资源的正确方法是什么?

发布时间:2020-12-15 21:17:08 所属栏目:百科 来源:网络整理
导读:一旦我使用FTP上传文件,我该怎么办?我通常只关闭两个流,即: sourceStream.Close();requestStream.Close(); 如果他们保持开放会有什么影响?其他用户是否可以使用相同的凭据登录?我能再次登录吗? 以下是更好理解的完整代码: FtpWebRequest request = (Ft
一旦我使用FTP上传文件,我该怎么办?我通常只关闭两个流,即:

sourceStream.Close();
requestStream.Close();

如果他们保持开放会有什么影响?其他用户是否可以使用相同的凭据登录?我能再次登录吗?

以下是更好理解的完整代码:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(
                          "bbbbb" + "bbbbbb" + "bbb/" + hj + "/" + hjj + ".txt");
request.Credentials = new NetworkCredential("bbbbb","bbbbbb");
request.Method = WebRequestMethods.Ftp.UploadFile;
request.UsePassive = true;

StreamReader sourceStream = new StreamReader(j + @"oo.txt");
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;

Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents,fileContents.Length);

sourceStream.Close();
requestStream.Close();

另外,我有时只有request.open方法 – 它没有分配任何close()方法,然后我在FTP操作的最后使用request.Abort().这有任何意义吗?

解决方法

好吧,MSDN documentation声明:

When using an FtpWebRequest object to upload a file to a server,you must write the file content to the request stream obtained by calling the GetRequestStream method or its asynchronous counterparts,the BeginGetRequestStream and EndGetRequestStream methods. You must write to the stream and close the stream before sending the request.

这表示如果不关闭请求流,可能会发生不良事件.如果您不关闭源流,那么您很可能最终会锁定文件,拒绝访问以供将来的请求和/或其他用户使用 – 尽管它取决于底层操作系统和文件的共享模式.

至于关闭请求:我没有使用过WebRequest&但是,根据上面提到的MSDN文档,似乎你应该遵循的模式

>创建请求
>获取请求流
>写下你的数据
>关闭请求流
>得到回应
>关闭响应对象(我假设完成了请求)

除非你另有说法,否则这样做可能是个好主意.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读