Dim FolderName As New IO.DirectoryInfo(FileLocationFolder)
Dim diar1 As IO.FileInfo() = FolderName.GetFiles("*.xml")
I am looping through diar1 like the following
For Each CurrFile In diar1
Next
Does that lock all the files in that directory?
If so, how do I dispose it after I am done? Any help would be appreciated.
Here is the rest of my code:
Public Sub Get_FTP_video(ByVal curr As Integer)
Try
Dim FolderName As New IO.DirectoryInfo(FileLocationFolder)
Dim diar1 As IO.FileInfo() = FolderName.GetFiles("*.xml")
Dim CurrFile As IO.FileInfo
Dim CurrfileName As String
Dim currsize, MinSize As Integer
currsize = 0
MinSize = 0
For Each CurrFile In diar1
CurrfileName = CurrFile.Name
If CurrFile.CreationTime.Date = Today.Date Then
GET_FileName(FileLocationFolder & CurrfileName, currsize)
If MinSize = 0 Then
MinSize = currsize
Else
If currsize < MinSize Then
splitter = CurrFile.Name.Split(".")
If My.Computer.FileSystem.FileExists(FileLocationFolder & splitter(0).ToString & ".mp4") Then
MinSize = currsize
newVideoName = splitter(0).ToString
End If
End If
End If
End If
Next
System.IO.File.Move(FileLocationFolder & videonamee & ".mp4", MoveFileToFolder & videonamee)
sendmessage = True
MoveAllFilesToBin()
Catch ex As System.Data.SqlClient.SqlException
Catch ex As Exception
End Try
End Sub
'
Public Sub GET_FileName(ByVal directorytracer As String, ByRef fileSize As Integer)
Try
Dim xmldoc As New XmlDataDocument()
Dim mmm As New XmlDataDocument
Dim xmlnode As XmlNodeList
Dim i As Integer
Dim str As String
Dim fs As New FileStream(directorytracer, FileMode.Open, FileAccess.Read)
xmldoc.Load(fs)
Dim ds As New DataSet
Dim xmlNodeRdr As XmlNodeReader
xmlnode = xmldoc.GetElementsByTagName("item")
For i = 0 To xmlnode.Count - 1
str = xmlnode(i).ChildNodes.Item(3).InnerXml
mmm.InnerXml = str
xmlNodeRdr = New XmlNodeReader(mmm)
ds.ReadXml(xmlNodeRdr)
fileSize = CInt(ds.Tables(0).Rows(0).Item(0).ToString)
Next
Catch ex As System.Data.SqlClient.SqlException
Catch ex As Exception
End Try
End Sub
.
The error occurs in this function:
Sub MoveAllFilesToBin()
Try
Dim FolderName As New IO.DirectoryInfo(FileLocationFolder)
Dim diar1 As IO.FileInfo() = FolderName.GetFiles()
For Each CurrFile In diar1
If System.IO.File.Exists(BinFolderFTP & CurrFile.Name) Then
System.IO.File.Delete(BinFolderFTP & CurrFile.Name)
End If
System.IO.File.Move(FileLocationFolder & CurrFile.Name, BinFolderFTP & CurrFile.Name)
Next
Catch ex As System.Data.SqlClient.SqlException
Catch ex As Exception
End Try
End Sub
.
The process cannot access the file because it is being used by another process.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.__Error.WinIOError()
at System.IO.File.Move(String sourceFileName, String destFileName)
In GET_FileName, a FileStream is opened and is neither Closed nor Disposed. The easiest solution is to wrap your FileStream usage with a Using block. You can probably start the block when you create the FileStream and end it right after xmldoc.Load(fs) since you no longer need it after that. This is good to do with anything implementing IDisposable.