private void OnFileExists(FileOverwriteEventArgs e) { if (FileExists != null) { FileExists(this, e); } }
/// <summary> /// Event proxy for FileExists. /// </summary> /// <param name="sender">The sender of the event.</param> /// <param name="e">The event arguments.</param> private void FileExistsEventProxy(object sender, FileOverwriteEventArgs e) { OnEvent(FileExists, e, true); }
/// <summary> /// Sets output stream for writing unpacked data /// </summary> /// <param name="index">Current file index</param> /// <param name="outStream">Output stream pointer</param> /// <param name="askExtractMode">Extraction mode</param> /// <returns>0 if OK</returns> public int GetStream(uint index, out ISequentialOutStream outStream, AskMode askExtractMode) { outStream = null; if (Canceled) { return(-1); } _currentIndex = (int)index; if (askExtractMode == AskMode.Extract) { var fileName = _directory; if (!_fileIndex.HasValue) { #region Extraction to a file if (_actualIndexes == null || _actualIndexes.Contains(index)) { var data = new PropVariant(); _archive.GetProperty(index, ItemPropId.Path, ref data); string entryName = NativeMethods.SafeCast(data, ""); #region Get entryName if (String.IsNullOrEmpty(entryName)) { if (_filesCount == 1) { var archName = Path.GetFileName(_extractor.FileName); archName = archName.Substring(0, archName.LastIndexOf('.')); if (!archName.EndsWith(".tar", StringComparison.OrdinalIgnoreCase)) { archName += ".tar"; } entryName = archName; } else { entryName = "[no name] " + index.ToString(CultureInfo.InvariantCulture); } } #endregion try { fileName = Path.Combine(RemoveIllegalCharacters(_directory, true), RemoveIllegalCharacters(_directoryStructure ? entryName : Path.GetFileName(entryName))); ValidateFileNameAndCreateDirectory(fileName); } catch (Exception e) { AddException(e); goto FileExtractionStartedLabel; } _archive.GetProperty(index, ItemPropId.IsDirectory, ref data); if (!NativeMethods.SafeCast(data, false)) { #region Branch _archive.GetProperty(index, ItemPropId.LastWriteTime, ref data); var time = NativeMethods.SafeCast(data, DateTime.MinValue); if (File.Exists(fileName)) { var fnea = new FileOverwriteEventArgs(fileName); OnFileExists(fnea); if (fnea.Cancel) { Canceled = true; return(-1); } if (String.IsNullOrEmpty(fnea.FileName)) { outStream = _fakeStream; goto FileExtractionStartedLabel; } fileName = fnea.FileName; } try { _fileStream = new OutStreamWrapper(File.Create(fileName), fileName, time, true); } catch (Exception e) { if (e is FileNotFoundException) { AddException( new IOException("The file \"" + fileName + "\" was not extracted due to the File.Create fail.")); } else { AddException(e); } outStream = _fakeStream; goto FileExtractionStartedLabel; } _fileStream.BytesWritten += IntEventArgsHandler; outStream = _fileStream; #endregion } else { #region Branch if (!Directory.Exists(fileName)) { try { Directory.CreateDirectory(fileName); } catch (Exception e) { AddException(e); } outStream = _fakeStream; } #endregion } } else { outStream = _fakeStream; } #endregion } else { #region Extraction to a stream if (index == _fileIndex) { outStream = _fileStream; _fileIndex = null; } else { outStream = _fakeStream; } #endregion } FileExtractionStartedLabel: _doneRate += 1.0f / _filesCount; var iea = new FileInfoEventArgs( _extractor.ArchiveFileData[(int)index], PercentDoneEventArgs.ProducePercentDone(_doneRate)); OnFileExtractionStarted(iea); if (iea.Cancel) { if (!String.IsNullOrEmpty(fileName)) { _fileStream.Dispose(); if (File.Exists(fileName)) { try { File.Delete(fileName); } catch (Exception e) { AddException(e); } } } Canceled = true; return(-1); } } return(0); }
void extr_FileExists(object sender, FileOverwriteEventArgs e) { StatusRichTextBox.Text += String.Format("[{0}] Warning: \"{1}\" already exists; overwritten." + Environment.NewLine, DateTime.Now.ToString("dd.MM.yyyy - HH.mm.ss"), e.FileName); }
private void OnFileExists(FileOverwriteEventArgs e) { if (FileExists != null) { FileExists(this, e); } }
void extr_FileExists(object sender, FileOverwriteEventArgs e) { tb_Messages.Text += String.Format("Warning: \"{0}\" already exists; overwritten\r\n", e.FileName); }
private void extr_FileExists(object sender, FileOverwriteEventArgs e) { tb_Messages.Text += String.Format( "Warning: \"{0}\" already exists; overwritten" + Environment.NewLine, e.FileName); }
/// <summary> /// Event proxy for FileExists. /// </summary> /// <param name="sender">The sender of the event.</param> /// <param name="e">The event arguments.</param> private void FileExistsEventProxy(object sender, FileOverwriteEventArgs e) { OnEvent(FileExists, e, true); }
// Event handler for file overwriting private static void Zip_FileExists(object sender, FileOverwriteEventArgs e) { Console.WriteLine(""); console.Write("Destination exists already. Skipping.", console.msgType.warning); e.Cancel = true; }