vb.net IO.StreamWriter仅在调试模式下工作
它在调试模式下工作得很好,但当我运行构建的进程并按下保存按钮时,它会出现“进程无法访问该文件,因为它正被另一个进程使用”的未处理异常错误(加载后不会保存)。 有什么建议吗vb.net IO.StreamWriter仅在调试模式下工作,vb.net,Vb.net,它在调试模式下工作得很好,但当我运行构建的进程并按下保存按钮时,它会出现“进程无法访问该文件,因为它正被另一个进程使用”的未处理异常错误(加载后不会保存)。 有什么建议吗 Imports System.IO Public Class DL1 Function DirExists(ByVal DirName As String) As Boolean On Error GoTo ErrorHandler DirExists = GetAttr(DirNam
Imports System.IO
Public Class DL1
Function DirExists(ByVal DirName As String) As Boolean
On Error GoTo ErrorHandler
DirExists = GetAttr(DirName) And vbDirectory
ErrorHandler:
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub LoadGlink_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoadGlink.Click
GlinkList.Items.Clear()
Dim fileReader As System.IO.StreamReader
fileReader = _
My.Computer.FileSystem.OpenTextFileReader("c:\Source\DL1\Glink.txt")
Dim mystring() As String = fileReader.ReadToEnd.Split(vbNewLine)
GlinkList.Items.AddRange(mystring)
fileReader.Close()
Me.Controls("Glinklist").Focus()
End Sub
Private Sub linktochrome_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles linktochrome.Click
If GlinkList.SelectedItem IsNot Nothing Then
' selected item is sglink
Dim sglink = GlinkList.SelectedItem.ToString
Process.Start("C:\Users\1\AppData\Local\Google\Chrome\Application\chrome.exe", sglink)
End If
Me.Controls("Glinklist").Focus()
End Sub
Private Sub movetofol_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles movetofol.Click
Dim strDir As String
strDir = "C:\Users\1\Downloads\Glink\" & "\" & SFoltext.Text
If DirExists(Trim(strDir)) = False Then
MkDir(Trim(strDir))
End If
For Each f As String In Sresult1.Items
Dim f_name As String = Path.GetFileName(f)
My.Computer.FileSystem.MoveFile(f, strDir & "\" & f_name)
Next
Sresult1.Items.Clear()
GlinkList.Items.Remove(GlinkList.SelectedItem)
End Sub
Private Sub ChecKDL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChecKDL.Click
Sresult1.Items.Clear()
Dim fileList As System.Collections.ObjectModel.ReadOnlyCollection(Of String)
fileList = My.Computer.FileSystem.GetFiles("C:\Users\1\Downloads\")
For Each foundFile As String In fileList
Sresult1.Items.Add(foundFile)
Next
End Sub
Private Sub Bsave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bsave.Click
Dim i As Integer
'Saves Glinklist
Dim path As String = System.IO.Path.Combine("c:\Source\DL1\", "Glink.txt")
Using fs As New System.IO.FileStream(path, IO.FileMode.Create)
Using w As IO.StreamWriter = New IO.StreamWriter(fs)
For i = 0 To GlinkList.Items.Count - 1
w.WriteLine(GlinkList.Items.Item(i))
Next
w.Close()
End Using
End Using
End Sub
Private Sub RMselec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RMselec.Click
GlinkList.Items.Remove(GlinkList.SelectedItem)
Me.Controls("Glinklist").Focus()
End Sub
End Class
通常这意味着权限问题。尝试以管理员身份运行VisualStudio以消除这种可能性 不确定这是否是答案,但我将在这里发布,因为我可以更好地格式化代码。
如果有什么变化,请告诉我 将您的阅读功能更改为
Using fileReader = _
My.Computer.FileSystem.OpenTextFileReader("c:\Source\DL1\Glink.txt")
Dim mystring() = fileReader.ReadToEnd.Split(vbNewLine)
GlinkList.Items.AddRange(mystring)
End Using
或者干脆
Dim mystring() = File.ReadAllLines()
GlinkList.Items.AddRange(mystring)
当我在VisualStudio中运行它时,它工作得很好。当我将它构建到DL1.exe并运行它时,它不起作用。当我单击“加载文本文件”然后保存它时,它崩溃了。我试过你的建议。遗憾的是,它不起作用。没有答案,但你知道吗?可能首选手动打开/拆分文件。使用fileReader=\uMy.Computer.FileSystem.OpenTextFileReader(“c:\Source\DL1\Glink.txt”)Dim mystring()=file.ReadAllLine()GlinkList.Items.AddRange(mystring)结束时使用“ReadAllLine不是System.IO.file的成员”。它说+1是为了让人们注意到这一点,但是OP使用
fileReader.Close()
。File.ReadAllLines()是File类的静态方法。您不需要StreamReader。第二个示例是在ReadAllLinesreadalllines上使用blockFixed打字错误(“c:\Source\DL1\glink.txt”)的替代方法,该方法简单得多。非常感谢。然而,我尝试了他们两个,但他们给出了相同的错误。