提问人:Vahid Bahrami 提问时间:11/14/2023 最后编辑:dbcVahid Bahrami 更新时间:11/14/2023 访问量:37
如何断开与本地JSON文件的连接?
How Could Disconnect From Local JSON File?
问:
我需要每 10 分钟下载一个 JSON 文件到我的项目中。(旧文件删除和新文件替换) 在删除和替换上一个进程之间,使用 Newtonsoft.json 库从数据中读取数据,到目前为止一切顺利。
现在我的问题:从JSON文件中读取数据后,删除旧数据取消并说其他程序使用的文件,并且无法替换新的JSON文件
Dim Sreader As StreamReader = File.OpenText("C:\Common\Current.json")
Dim Reader As JsonTextReader = New JsonTextReader(Sreader)
Dim Treader As JObject = CType(JToken.ReadFrom(Reader), JObject)
S1 = Treader.SelectToken("current.temp_c").ToString()
答:
1赞
Joel Coehoorn
11/14/2023
#1
Using Sreader As StreamReader = File.OpenText("C:\Common\Current.json")
Using Reader As New JsonTextReader(Sreader)
Dim Treader As JObject = CType(JToken.ReadFrom(Reader), JObject)
S1 = Treader.SelectToken("current.temp_c").ToString()
'...
End Using
End Using
File.Delete("C:\Common\Current.json")
除此之外,作为额外的预防措施,在打开文件之前,很容易重命名文件以包含当前日期和时间。这至少可以防止锁定文件问题阻止其他更新。
Dim filePath As String = "C:\Common\Current.json"
Dim tempPath As String = $"C:\Common\Current-{DateTime.Now:yyyyMMddHHmmss}.json"
File.Move(filePath, tempPath)
Using Sreader As StreamReader = File.OpenText(tempPath)
Using Reader As New JsonTextReader(Sreader)
Dim Treader As JObject = CType(JToken.ReadFrom(Reader), JObject)
S1 = Treader.SelectToken("current.temp_c").ToString()
'...
End Using
End Using
File.Delete(tempPath)
评论
Using
打开 and ,当语句的主体终止时,它将被关闭。请参阅汉斯·帕桑特(Hans Passant)的回答,以 Vb.net 阅读文件后没有关闭文件。Stream
StreamReader
Using