【问题标题】:"IOException was unhandled" that error keeps appearing“IOException was unhandled”,错误不断出现
【发布时间】:2018-04-28 18:27:33
【问题描述】:

我遇到了这个问题,它似乎并没有消失。我在 vb.net 中完成了一个代码,我在其中流式传输文件,但我不断收到该错误

“IOException was unhandled”进程无法访问文件 '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

【问题讨论】:

  • 哪里有 C++?
  • 对不起,没有 c++,或者我认为。我还是新人,所以我不知道准确
  • 把你的流放在 Using 语句中,以确保一切都正确关闭。有时打开相同的文件会导致问题。是否有其他进程试图打开该文件?
  • 您是否在 Excel 中打开了文件?
  • the_lotus 我试图理解你在说什么,记住我对 vb 非常陌生

标签: vb.net


【解决方案1】:

FileStreamStreamWriter 是 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 XmlMicrosoft Office Interop

【讨论】:

  • 我基本上同意 Open Xml 或 Interop。但是,有时,您可以通过使用具有 xls 扩展名的制表符分隔的文本文件来实现“excel lite”效果。 Excel 将打开它并将其视为本机文件。您只需要小心,因为一旦真正的 Excel 将新信息保存到该文件中,您将处理完整的 Excel 格式。
  • @JoelCoehoorn 很有趣。我经常使用 tab delim txt 和 Open with >> Excel。经过快速测试,您是对的,它适用于 xls 扩展名,但打开文件时会出现警告消息。但是,它不适用于较新的 xlsx 扩展。
  • 非常感谢您对刚才提到的内容的帮助!我不知道你在说什么。我还是这个领域的新手
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
  • 2013-12-24
相关资源
最近更新 更多