使用相同的文件错误

时间:2015-07-05 20:15:54

标签: vb.net

在按钮上单击我有以下代码来编写我的文本框中的内容。

  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

我有点困在这个问题上,谢谢

2 个答案:

答案 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 optionMy.Computer.FileSystem方法不这样做.¹

但是,我怀疑你真的不想这样做。我怀疑你想写完之后,想要。在这种情况下,只需在使用它之后关闭文件就足够了。最简单的方法是使用Using语句:

Using file = My.Computer.FileSystem.OpenTextFileWriter(...)
    file.WriteLine(...)
    file.WriteLine(...)
    ...
End Using

这确保了在Using块保留后(正常执行或异常)文件将被正确关闭。实际上,最好在IDisposable语句中包含其类实现StreamWriter的每个对象(例如Using)的使用。

¹根据reference sourceOpenTextFileWriter创建New IO.StreamWriter(file, append, encoding),然后创建new FileStream(..., FileShare.Read, ...)