下面的代碼給我一個System.IO.IOException異常,消息'進程無法訪問文件'。爲什麼使用C1ZipFile後不能刪除這個文件?
private void UnPackLegacyStats()
{
DirectoryInfo oDirectory;
XmlDocument oStatsXml;
//Get the directory
oDirectory = new DirectoryInfo(msLegacyStatZipsPath);
//Check if the directory exists
if (oDirectory.Exists)
{
//Loop files
foreach (FileInfo oFile in oDirectory.GetFiles())
{
//Check if file is a zip file
if (C1ZipFile.IsZipFile(oFile.FullName))
{
//Open the zip file
using (C1ZipFile oZipFile = new C1ZipFile(oFile.FullName, false))
{
//Check if the zip contains the stats
if (oZipFile.Entries.Contains("Stats.xml"))
{
//Get the stats as a stream
using (Stream oStatsStream = oZipFile.Entries["Stats.xml"].OpenReader())
{
//Load the stats as xml
oStatsXml = new XmlDocument();
oStatsXml.Load(oStatsStream);
//Close the stream
oStatsStream.Close();
}
//Loop hit elements
foreach (XmlElement oHitElement in oStatsXml.SelectNodes("/*/hits"))
{
//Do stuff
}
}
//Close the file
oZipFile.Close();
}
}
//Delete the file
oFile.Delete();
}
}
}
我很努力地看到文件仍然可以鎖定在哪裏。所有可能保存在文件句柄上的對象都在使用塊中,並且顯式關閉。
是否使用FileInfo對象而不是靜態GetFiles方法返回的字符串?
任何想法?
你究竟在哪裏得到異常? – 2009-07-06 18:00:47
@Joshua - On oFile.Delete(); – stevehipwell 2009-07-07 07:41:44