【发布时间】:2016-05-06 06:58:14
【问题描述】:
这是我用来提取 zip 文件的代码,以确保目标目录中没有任何脏文件
internal void UnzipProject()
{
if (Directory.Exists(SourceDir))
Directory.Delete(SourceDir, true);
if (File.Exists(CodeZipFile))
{
Directory.CreateDirectory(SourceDir); // fails here
ZipFile.ExtractToDirectory(CodeZipFile, SourceDir);
}
}
有时Directory.CreateDirectory(SourceDir) 无法创建新目录,我在下一行出现异常,但如果我退后一步重试创建目录,它可以工作。下一次执行时会重复完全相同的模式。
编辑
这是实际上关于 dir 没有创建的异常,我可以看到 src dir 不存在:
System.UnauthorizedAccessException was unhandled
HResult=-2147024891
Message=Access to the path '(...MyPath...)\src\MySolution.sln' is denied.
Source=mscorlib
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.IO.Compression.ZipFileExtensions.ExtractToFile(ZipArchiveEntry source, String destinationFileName, Boolean overwrite)
at System.IO.Compression.ZipFileExtensions.ExtractToDirectory(ZipArchive source, String destinationDirectoryName)
at System.IO.Compression.ZipFile.ExtractToDirectory(String sourceArchiveFileName, String destinationDirectoryName, Encoding entryNameEncoding)
at System.IO.Compression.ZipFile.ExtractToDirectory(String sourceArchiveFileName, String destinationDirectoryName)
........
【问题讨论】:
-
你得到"sometimes"的例外是什么
-
你多久运行一次这个方法?每小时一次,每分钟一次,每秒1000次?
-
仅在应用程序启动时运行此方法。在生产中,它可能会在几分钟内被召回一次
-
有趣的是,人们对这个问题投了反对票?可以分享一下原因吗?
-
1) 是否有任何防病毒软件正在运行?您可以禁用它并重试吗? 2)这是发生在网络共享还是常规本地文件夹上? 3) 请您尝试使用 AlphaFS(替换所有 IO 命名空间同时修复大量错误(如长路径等)的库)。
标签: c#