gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:05:57 25 4
gpt4 key购买 nike

我想知道远程文件的最后修改日期(通过 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 的请求 header 要求。这样响应应该是 304 - Not Modified如果文件未更改(未发送文件内容),或 200 - OK如果文件已更改(并且文件的内容将在响应中发送),尽管服务器不需要遵守此 header 。
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 ,因为我是在控制台应用程序中进行测试 - 您可能应该 await反而。

关于vb.net - 如何获取远程文件的最后修改值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24743194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com