我有这个问题,它似乎没有消失。这是我在vb.net中完成的代码,其中我要传输文件,但我一直在收到错误
“IOException未处理”进程无法访问该文件 'C:\ Users \ Lenovo \ documents \ visual studio 2010 \ Projects \ File streaming \ File Streaming \ bin \ Debug \ banking.xls'因为它正在存在 被另一个过程使用。
下面是代码:
Imports System.IO
Imports System.Windows.Forms.Form
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub btnDisplay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisplay.Click
Dim FileStr As New FileStream("banking.xls", FileMode.Create, FileAccess.Write)
Dim a As New StreamWriter(FileStr)
'a.WriteLine("File should be displayed in the RTB............")
'a.Close()
**ERROR APPEARS HERE**
FileStr = New FileStream("banking.xls", FileMode.Open, FileAccess.Read)
Dim i As New StreamReader(FileStr)
i.BaseStream.Seek(0, SeekOrigin.Begin)
If i.Peek() > -1 Then
rtbDisplay.Text &= i.ReadLine()
End If
i.Close()
End Sub
Private Sub btnClear_Click(sender As System.Object, e As System.EventArgs) Handles btnClear.Click
rtbDisplay.Text = ""
End Sub
Private Sub btnExit_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click
Me.Close()
End Sub
Private Function FileStream() As Object
Throw New NotImplementedException
End Function
End Class
答案 0 :(得分:2)
FileStream
和StreamWriter
是IDisposable对象,应该在完成后处理。当IDisposable具有本地范围时,最好使用Using
块创建它们。
Sub Main()
Using FileStr As New FileStream("banking.xls", FileMode.Create, FileAccess.Write)
Using a As New StreamWriter(FileStr)
a.WriteLine("File should be displayed in the RTB............")
End Using
End Using
Using FileStr = New FileStream("banking.xls", FileMode.Open, FileAccess.Read)
Dim i As New StreamReader(FileStr)
End Using
End Sub
但是,我不知道为什么要将文本写入这样的xls文件。如果您正在操作Excel文件,则应该查看Open Xml或Microsoft Office Interop