public OnFileFailure ( string file, |
||
file | string | The file causing the failure. |
e | The exception for this failure. | |
return | bool |
private void ProcessFile(object sender, ScanEventArgs e) { if (events_ != null && events_.ProcessFile != null) { events_.ProcessFile(sender, e); } if (e.ContinueRunning) { try { using (FileStream stream = File.Open(e.Name, FileMode.Open, FileAccess.Read, FileShare.Read)) { ZipEntry entry = entryFactory_.MakeFileEntry(e.Name); outputStream_.PutNextEntry(entry); AddFileContents(e.Name, stream); } } catch (Exception e2) { if (events_ == null) { continueRunning_ = false; throw; } continueRunning_ = events_.OnFileFailure(e.Name, e2); } } }
private void ProcessFile(object sender, ScanEventArgs e) { if (events_ != null && events_.ProcessFile != null) { events_.ProcessFile(sender, e); } if (!e.ContinueRunning) { return; } try { FileStream val = File.Open(e.Name, (FileMode)3, (FileAccess)1, (FileShare)1); try { ZipEntry entry = entryFactory_.MakeFileEntry(e.Name); outputStream_.PutNextEntry(entry); AddFileContents(e.Name, (Stream)(object)val); } finally { ((global::System.IDisposable)val)?.Dispose(); } } catch (global::System.Exception e2) { if (events_ != null) { continueRunning_ = events_.OnFileFailure(e.Name, e2); return; } continueRunning_ = false; throw; } }
void ExtractEntry(ZipEntry entry) { bool doExtraction = entry.IsCompressionMethodSupported(); string targetName = entry.Name; if (doExtraction) { if (entry.IsFile) { targetName = extractNameTransform_.TransformFile(targetName); } else if (entry.IsDirectory) { targetName = extractNameTransform_.TransformDirectory(targetName); } doExtraction = !((targetName == null) || (targetName.Length == 0)); } // TODO: Fire delegate/throw exception were compression method not supported, or name is invalid? string dirName = null; if (doExtraction) { if (entry.IsDirectory) { dirName = targetName; } else { dirName = Path.GetDirectoryName(Path.GetFullPath(targetName)); } } if (doExtraction && !Directory.Exists(dirName)) { if (!entry.IsDirectory || CreateEmptyDirectories) { try { Directory.CreateDirectory(dirName); } catch (Exception ex) { doExtraction = false; if (events_ != null) { if (entry.IsDirectory) { continueRunning_ = events_.OnDirectoryFailure(targetName, ex); } else { continueRunning_ = events_.OnFileFailure(targetName, ex); } } else { continueRunning_ = false; throw; } } } } if (doExtraction && entry.IsFile) { ExtractFileEntry(entry, targetName); } }