相关疑难解决方法(0)

即使在"正在使用另一个进程"异常时,如何读取文件?

在VB.NET或C#中,我正在尝试读取另一个程序正在使用的文本文件的内容(这就是重点,实际上,我无法停止程序或它停止写入文本文件,并且我想定期读出另一个程序中文本文件中当前的内容.

这是我正在使用的代码(VB.NET)

Dim strContents As String
Dim objReader As StreamReader
objReader = New StreamReader(FullPath)
strContents = objReader.ReadToEnd()
objReader.Close()
Run Code Online (Sandbox Code Playgroud)

或者在C#中:

var objReader = new StreamReader(FullPath);
var strContents = objReader.ReadToEnd();
objReader.Close();
Run Code Online (Sandbox Code Playgroud)

但是,上面引发了IO异常"进程无法访问文件'file.txt',因为它正被另一个进程使用." 在这种情况下是否有任何变通方法?

.net c# vb.net file-io

45
推荐指数
3
解决办法
3万
查看次数

File.ReadAllBytes 抛出 IOException 表示该进程无法访问该文件,因为它正被另一个进程使用

File.ReadAllBytes 在两次调用之间没有足够的调用间隔时会导致 IOException 吗?

当我设置网格的 Row 和 Col 时,它会触发 RowColChange 事件。RowColChange 有一些代码可以使用 File.ReadAllBytes 打开同一个文件。我知道 ReadAllBytes 内部在 FileStream 上使用 using 因此文件流在使用后关闭。但是在告诉操作系统文件被释放时是否可能有一些延迟,因此 File.ReadAllBytes 的后续使用可能会失败并引发异常。有什么想法吗?谢谢!

grid.Row = 0
grid.Row = 1
grid.Col = 3


Private Sub grid_RowColChange(ByVal sender As Object, ByVal e As System.EventArgs) Handles grid.RowColChange
    'Is it possible to get IOException saying the process can't access the file because it is being used by another process.
     Display(File.ReadAllBytes(filePath))
End Sub
Run Code Online (Sandbox Code Playgroud)

.net vb.net system.io.file

5
推荐指数
2
解决办法
5899
查看次数

标签 统计

.net ×2

vb.net ×2

c# ×1

file-io ×1

system.io.file ×1