我正在使用IO.Directory.GetFiles来搜索文件夹中的文件.搜索完成后,在我的应用程序关闭之前,我无法使用此文件夹中的文件.我还没有在DirectoryInfo类中找到任何dispose函数,所以我的问题是:如何释放或解锁这些文件?
我的代码:
Dim list = IO.Directory.GetFiles(folder,"*.*",IO.SearchOption.AllDirectories)
编辑:
我已经非常仔细地检查了我的代码(我无法在另一个项目中重现我的问题),事实证明这个函数是锁定文件:
Public Function Computefilehash(ByVal filePath As String) Dim md5 As MD5CryptoServiceProvider = New MD5CryptoServiceProvider Dim f As FileStream = New FileStream(filePath,FileMode.Open,FileAccess.Read,FileShare.Read,8192) f = New FileStream(filePath,8192) md5.ComputeHash(f) f.Close() f.dispose() Dim hash As Byte() = md5.Hash Dim buff As Text.StringBuilder = New Text.StringBuilder Dim hashByte As Byte For Each hashByte In hash buff.Append(String.Format("{0:X2}",hashByte)) Next Dim md5string As String md5string = buff.ToString() Return md5string End Function
您正在打开2个单独的流,然后只关闭最后一个流.
Dim f As FileStream = New FileStream(filePath,8192) f = New FileStream(filePath,8192)
第一行创建一个新的文件流实例,然后,在它可以使用之前,第二行创建一个新实例并抛出原始实例而不处理它.
你应该只需要其中一条线.
我建议:
Dim f As New FileStream(filePath,8192)
原文地址:https://www.jb51.cc/vb/255099.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。