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

vb.net – 如何获取远程文件的最后修改值?

发布时间:2020-12-17 07:20:09 所属栏目:百科 来源:网络整理
导读:我想知道远程文件的最后修改日期(通过url定义). 并且只下载它,如果它比我本地存储的更新. 我设法为本地文件执行此操作,但找不到为远程文件执行此操作的解决方案(不下载它们) 工作: Dim infoReader As System.IO.FileInfo = My.Computer.FileSystem.GetFileI
我想知道远程文件的最后修改日期(通过url定义).
并且只下载它,如果它比我本地存储的更新.

我设法为本地文件执行此操作,但找不到为远程文件执行此操作的解决方案(不下载它们)

工作:

Dim infoReader As System.IO.FileInfo = My.Computer.FileSystem.GetFileInfo("C:/test.txt")
MsgBox("File was last modified on " & infoReader.LastWriteTime)

不工作:

Dim infoReader As System.IO.FileInfo = My.Computer.FileSystem.GetFileInfo("http://google.com/robots.txt")
        MsgBox("File was last modified on " & infoReader.LastWriteTime)

我希望有一个只需要下载文件头的解决方案

解决方法

您可以使用 System.Net.Http.HttpClient类从服务器获取上次修改日期.因为它正在发送HEAD请求,所以它不会获取文件内容:

Dim client = New HttpClient()
Dim msg = New HttpRequestMessage(HttpMethod.Head,"http://google.com/robots.txt")
Dim resp = client.SendAsync(msg).Result
Dim lastMod = resp.Content.Headers.LastModified

您还可以将If-Modified-Since请求标头与GET请求一起使用.这样,如果文件没有被更改(没有发送文件内容),响应应该是304 – Not Modified,如果文件已被更改,则响应应该是200 – OK(并且文件的内容将在响应中发送),尽管服务器不需要遵守此标头.

Dim client = New HttpClient()
Dim msg = New HttpRequestMessage(HttpMethod.Get,"http://google.com/robots.txt")
msg.Headers.IfModifiedSince = DateTimeOffset.UtcNow.AddDays(-1) ' use the date of your copy of the file
Dim resp = client.SendAsync(msg).Result
Select Case resp.StatusCode
    Case HttpStatusCode.NotModified
        ' Your copy is up-to-date
    Case HttpStatusCode.OK
        ' Your copy is out of date,so save it
        File.WriteAllBytes("C:robots.txt",resp.Content.ReadAsByteArrayAsync.Result)
End Select

注意使用.Result,因为我在控制台应用程序中进行测试 – 你应该等待.

(编辑:李大同)

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

    推荐文章
      热点阅读