我的应用程序可以创建一个目录,从ZIP文件中放入一个文件,然后删除ZIP文件。 当我然后尝试删除该文件时,即使没有对它进行任何操作,我也会收到“拒绝访问”错误。 这是代码:
File.WriteAllBytes(OpslagLocatieDocumenten + myTicketNummer.ToString + "\documenten.zip", op.Documenten)
Using zp As New ZipFile(OpslagLocatieDocumenten + myTicketNummer.ToString + "\documenten.zip")
zp.FlattenFoldersOnExtract = True
zp.ExtractAll(OpslagLocatieDocumenten + myTicketNummer.ToString, ExtractExistingFileAction.OverwriteSilently)
zp.Dispose()
End Using
Try
For Each itm As String In Directory.GetFiles(OpslagLocatieDocumenten + myTicketNummer.ToString)
Try
File.Delete(itm)
Catch ex As Exception
End Try
Next
Catch ex As Exception
End Try
现在看起来有点乱,但这是出于测试目的。 在for-next部分中,在从ZIP写入文件之后,我尝试删除文件。 目前,目录中有两个文件,一个ZIP和一个来自ZIP的PDF文档。 itm中的第一个文件是PDF,它在ACCESS DENIED时出错。 itm中的第二个文件是被删除的ZIP。 PDF的大小为311 kb。 通过Windows资源管理器,我可以毫无问题地删除它,即使应用程序仍在运行。
为什么我的文件被锁定? 我该怎样做才能绕过或取消这个锁?
RG,
埃里克
答案 0 :(得分:3)
发现问题。
添加到ZIP的文件将其属性设置为READ ONLY。 因此,当应用程序写入文件时,Windows应该不允许应用程序删除它。
不幸的是,Windows确实允许通过Windows资源管理器删除该文件,而不会显示该文件是只读的消息。
答案 1 :(得分:0)
您是否也尝试过File.Kill(fileLocation)
方法?