Vb.net 文件可以';无法访问,因为它';它已经在使用了
我有一个Sub读取另一个Sub中创建的文件。我收到一个错误 无法访问其他进程中正在使用的文件 根据我在网上看到的内容,我需要关闭StreamReader。我尝试在不同的变量上使用Vb.net 文件可以';无法访问,因为它';它已经在使用了,vb.net,Vb.net,我有一个Sub读取另一个Sub中创建的文件。我收到一个错误 无法访问其他进程中正在使用的文件 根据我在网上看到的内容,我需要关闭StreamReader。我尝试在不同的变量上使用.close(),但似乎没有任何效果 下面是编写另一个子系统随后访问的文件的代码 Private Sub CreateGraphicsFunction(sender As Object, e As EventArgs) Dim Regex = New Regex("infoEntityIdent=""(ICN.
.close()
,但似乎没有任何效果
下面是编写另一个子系统随后访问的文件的代码
Private Sub CreateGraphicsFunction(sender As Object, e As EventArgs)
Dim Regex = New Regex("infoEntityIdent=""(ICN.+?)[""].*?[>]")
strGraphicFile = MoveLocation & "\ICN-LIST.txt"
Dim ICNFiles = Directory.EnumerateFiles(MovePath, "*.*", SearchOption.AllDirectories)
For Each tFile In ICNFiles
Dim input = File.ReadAllText(tFile)
Dim match = Regex.Match(input)
If match.Success Then
output.Add(match.Groups(1).Value)
End If
Next
File.WriteAllLines(strGraphicFile, output)
locationGraphicsLog = strGraphicFile
End Sub
读取创建的文件的另一个子系统
Private Sub btnFindICN_Click(sender As Object, e As EventArgs) Handles btnFindICN.Click
Application.UseWaitCursor = True
Application.DoEvents()
Me.Refresh()
Dim sGraphicFilesToFind As String
Dim graphicLocation As String
'MoveWithPath As String
Dim graphicFile As String
graphicLocation = txtSearchICN.Text
MoveLocation = MovePath
graphicLogFile = MoveLocation & "\Reports\1-OrphanedFilesItems.txt"
Dim FILE_NAME As String
FILE_NAME = MoveLocation & "\ICN-LIST.txt"
Dim objReader As New System.IO.StreamReader(FILE_NAME)
Dim sGraphicFile As String
Do While objReader.Peek() <> -1
graphicFile = objReader.ReadLine()
sGraphicFilesToFind = graphicLocation & "\" & graphicFile & "*.*"
sGraphicFile = graphicFile
Dim createGraphicReportFldr As String
Dim paths() As String = IO.Directory.GetFiles(graphicLocation, sGraphicFile, IO.SearchOption.AllDirectories)
If paths.Count = 0 Then
'Debug.Print(graphicFile)
If System.IO.File.Exists(graphicLogFile) = True Then
Dim objWriter As New System.IO.StreamWriter(graphicLogFile, IO.FileMode.Append)
objWriter.WriteLine(graphicFile)
objWriter.Close()
Else
'MsgBox("Creating Orphaned graphicFile Now. ")
createGraphicReportFldr = MoveLocation & "\Reports"
If Not IO.Directory.Exists(createGraphicReportFldr) Then
IO.Directory.CreateDirectory(createGraphicReportFldr)
'MsgBox("folder created" & createGraphicReportFldr)
Dim writeFile As IO.StreamWriter
writeFile = IO.File.CreateText(graphicLogFile)
writeFile.Write(graphicFile & vbCrLf)
writeFile.Close()
Else
'MsgBox("Folder already exist")
End If
End If
Else
For Each pathAndFileName As String In paths
Dim createGraphicsFolder As String
'Dim moveFileToNewFolder As String
If System.IO.File.Exists(pathAndFileName) = True Then
Dim sRegLast As String = pathAndFileName.Substring(pathAndFileName.LastIndexOf("\") + 1)
Dim toGraphiicFileLocation As String
'MsgBox("sRegLast " & sRegLast)
fileGraphicLoc = MoveLocation & sRegLast
createGraphicsFolder = MoveLocation & "\Figures"
moveGraphicFileToNewFolder = MoveLocation & "\Figures\" & sRegLast
toGraphiicFileLocation = createGraphicsFolder & "\" & sRegLast
'MsgBox("FileLoc " & fileLoc)
If Not IO.Directory.Exists(createGraphicsFolder) Then
IO.Directory.CreateDirectory(createGraphicsFolder)
' MsgBox("folder created" & createGraphicsFolder)
End If
If System.IO.File.Exists(fileGraphicLoc) = False Then
System.IO.File.Copy(pathAndFileName, moveGraphicFileToNewFolder)
Debug.Write("Graphics moved to : " & moveGraphicFileToNewFolder & vbCrLf)
End If
End If
Next
End If
Loop
'MsgBox("graphicFiles have been moved")
Call CreateGraphicsFunction(Nothing, System.EventArgs.Empty)
Application.UseWaitCursor = False
Application.DoEvents()
' Me.Close()
End Sub
Private子btnFindICN\u Click(发送者作为对象,e作为事件参数)处理btnFindICN。单击
Application.UseWaitCursor=True
Application.DoEvents()
我
Dim SGRAPHICFILES以字符串形式查找
将图形位置设置为字符串
'移动路径作为字符串
将图形文件设置为字符串
graphicLocation=txtSearchICN.Text
MoveLocation=MovePath
graphicLogFile=MoveLocation&“\Reports\1-OrphanedFileItems.txt”
Dim文件名为字符串
文件名=MoveLocation&“\ICN-LIST.txt”
Dim objReader作为新System.IO.StreamReader(文件名)
将文件设置为字符串
Do While objReader.Peek()-1
graphicFile=objReader.ReadLine()
sGraphicFilesToFind=graphicLocation&“\”和graphicFile&“****”
sGraphicFile=graphicFile
Dim createGraphicReportFldr作为字符串
Dim paths()的格式为String=IO.Directory.GetFiles(graphicLocation、sGraphicFile、IO.SearchOption.AllDirectories)
如果paths.Count=0,则
'调试.Print(图形文件)
如果System.IO.File.Exists(graphicLogFile)=True,则
Dim objWriter作为新System.IO.StreamWriter(graphicLogFile、IO.FileMode.Append)
objWriter.WriteLine(图形文件)
objWriter.Close()
其他的
'MsgBox(“立即创建孤立图形文件”)
createGraphicReportFldr=MoveLocation&“\Reports”
如果不存在IO.Directory.Exists(createGraphicReportFldr),则
IO.Directory.CreateDirectory(createGraphicReportFldr)
'MsgBox(“已创建文件夹”&createGraphicReportFldr)
作为IO.StreamWriter的Dim writeFile
writeFile=IO.File.CreateText(graphicLogFile)
writeFile.Write(图形文件和vbCrLf)
writeFile.Close()
其他的
'MsgBox(“文件夹已存在”)
如果结束
如果结束
其他的
对于路径中的每个pathAndFileName作为字符串
将createGraphicsFolder设置为字符串
'将moveFileToNewFolder设置为字符串
如果System.IO.File.Exists(路径和文件名)=True,则
Dim sRegLast As String=pathAndFileName.Substring(pathAndFileName.LastIndexOf(“\”)+1)
Dim toGraphiicFileLocation作为字符串
'MsgBox(“sRegLast”&sRegLast)
fileGraphicLoc=MoveLocation&sRegLast
createGraphicsFolder=MoveLocation&“\Figures”
moveGraphicFileToNewFolder=MoveLocation&“\Figures\”&sRegLast
toGraphiicFileLocation=createGraphicsFolder&“\”&sRegLast
'MsgBox(“FileLoc”和FileLoc)
如果不存在IO.Directory.Exists(createGraphicsFolder),则
IO.Directory.CreateDirectory(createGraphicsFolder)
'MsgBox(“已创建文件夹”和createGraphicsFolder)
如果结束
如果System.IO.File.Exists(fileGraphicLoc)=False,则
System.IO.File.Copy(路径和文件名,移动图形文件到新文件夹)
Debug.Write(“图形移动到:”&moveGraphicFileToNewFolder&vbCrLf)
如果结束
如果结束
下一个
如果结束
环
'MsgBox(“图形文件已移动”)
调用CreateGraphicsFunction(无,System.EventArgs.Empty)
Application.UseWaitCursor=False
Application.DoEvents()
“我,关上()
端接头
在“其他子项”中,更改
到
并将添加到使用完的地方。可能就在循环之后
。这将确保始终处理一次性流
看。如果能够将IDisposable对象的作用域限制为单个方法,则几乎总是希望将其包装在Using块中。在哪一行收到错误消息?文件可能重复。WriteAllines(strGraphicFile,output)是我收到错误的地方。我唯一的其他输出位置是File.WriteAllines(strGraphicFile,output)并声明变量“读取文件的子文件”-您也应该显示该变量。您只显示了写入文件的位置。我尝试将其放置在using块中。由于某种原因,那艘潜艇现在根本不跑了
Dim objReader As New System.IO.StreamReader(FILE_NAME)
Using objReader = New System.IO.StreamReader(FILE_NAME)