WriteAllLines 是删除现有文件并重新创建它,还是覆盖其中的数据?

Does WriteAllLines delete the existing file and recreate it, or overwrite the data inside it?

提问人:IdoEng 提问时间:9/28/2023 最后编辑:djvIdoEng 更新时间:9/28/2023 访问量:43

问:

我在我的项目中使用了这个方法。txt 文件将在执行“保存”操作时同步到远程服务器(通过另一个应用程序,在我的情况下是 Autodesk Docs)。File.WriteAllLines()

我不确定为什么,但是使用不会触发文件的同步,而打开它并手动执行保存确实会触发同步。WriteAllLines

我怀疑这可能是由于删除现有文件并创建一个新文件而不是覆盖文件内的数据......? 有没有办法通过删除文件中的现有数据而不是删除现有文件并创建新文件来覆盖?WriteAllLines

我什至删除现有文件并重新创建它是否正确?WriteAllLines

vb.net 保存 streamwriter 覆盖 txt

评论

0赞 Andrew Morton 9/28/2023
我不知道它是否有效,但您可以尝试使用 FileStream.SetLength 将文件的长度设置为零,然后将数据写入该流。 等。Using fs = New FileStream("C:\temp\aab.txt", FileMode.OpenOrCreate)fs.SetLength(0)Using sw = New StreamWriter(fs)'write text...
1赞 Andrew Morton 9/28/2023
您可以通过使用带有合适过滤器的进程监视器来调查文件发生的情况。
0赞 djv 9/28/2023
您可以反复测试您的理论,并看到创建日期将保持不变,而修改日期已更改。文件未删除File.WriteAllLines("temp.txt", Guid.NewGuid().ToString().Select(Function(c) c.ToString()))
0赞 djv 9/28/2023
您也可以尝试不同的方法:、、、Using sw As New StreamWriter(filename, False)Using fs As New FileStream(filename, FileMode.Truncate) Using sw As New StreamWriter(fs)Using sw As New StreamWriter(filename, True)Using fs As New FileStream(filename, FileMode.Create) Using sw As New StreamWriter(fs)

答: 暂无答案