在按钮上单击我有以下代码来编写我的文本框中的内容。
Dim file As System.IO.StreamWriter
file = My.Computer.FileSystem.OpenTextFileWriter("C:/Users/Nick/Documents/Dra.txt", False)
file.WriteLine(NameBasic)
file.WriteLine(LastBasic)
file.WriteLine(PhoneBasic)
file.WriteLine(NameEmer1)
在我的表单加载中,我从写入的内容中加载记事本中的内容,它说它已经被使用(文件)这是真的,我怎么能有两个不同的函数(写和读)操作没有这个错误的同一个文件?
The process cannot access the file 'C:\Users\Nick\Documents\Dra.txt' because it is being used by another process.
这是我的onformload
Dim read As System.IO.StreamReader
read = My.Computer.FileSystem.OpenTextFileReader("C:/Users/Nick/Documents/Dra.txt")
lblNameBasic.Text = read.ReadLine
我有点困在这个问题上,谢谢
答案 0 :(得分:0)
完成写入后,您需要关闭该文件。
Dim file As System.IO.StreamWriter
file = My.Computer.FileSystem.OpenTextFileWriter("C:/Users/Nick/Documents/Dra.txt", False)
file.WriteLine(NameBasic)
file.WriteLine(LastBasic)
file.WriteLine(PhoneBasic)
file.WriteLine(NameEmer1)
file.Close()
答案 1 :(得分:0)
回答你的问题:
如何在没有此错误的情况下操作同一个文件有两个不同的函数(写入和读取)?
如果您确实想要同时读取和写入来自两个进程的同一文件,则需要open the file with the FileShare.ReadWrite option。 My.Computer.FileSystem
方法不这样做.¹
但是,我怀疑你真的不想这样做。我怀疑你想写,写完之后,想要读。在这种情况下,只需在使用它之后关闭文件就足够了。最简单的方法是使用Using
语句:
Using file = My.Computer.FileSystem.OpenTextFileWriter(...)
file.WriteLine(...)
file.WriteLine(...)
...
End Using
这确保了在Using
块保留后(正常执行或异常)文件将被正确关闭。实际上,最好在IDisposable
语句中包含其类实现StreamWriter
的每个对象(例如Using
)的使用。
¹根据reference source,OpenTextFileWriter
创建New IO.StreamWriter(file, append, encoding)
,然后创建new FileStream(..., FileShare.Read, ...)
。