예제 #1
0
		/// <summary>
		/// Create a zip archive sending output to the <paramref name="outputStream"/> passed.
		/// </summary>
		/// <param name="outputStream">The stream to write archive data to.</param>
		/// <param name="sourceDirectory">The directory to source files from.</param>
		/// <param name="recurse">True to recurse directories, false for no recursion.</param>
		/// <param name="fileFilter">The <see cref="PathFilter">file filter</see> to apply.</param>
		/// <param name="directoryFilter">The <see cref="PathFilter">directory filter</see> to apply.</param>
		public void CreateZip(Stream outputStream, string sourceDirectory, bool recurse, string fileFilter, string directoryFilter)
		{
			NameTransform = new ZipNameTransform(sourceDirectory);
			sourceDirectory_ = sourceDirectory;

			using (outputStream_ = new ZipOutputStream(outputStream))
			{

#if !NETCF_1_0
				if (password_ != null)
				{
					outputStream_.Password = password_;
				}
#endif

				FileSystemScanner scanner = new FileSystemScanner(fileFilter, directoryFilter);
				scanner.ProcessFile += new ProcessFileHandler(ProcessFile);
				if (this.CreateEmptyDirectories)
				{
					scanner.ProcessDirectory += new ProcessDirectoryHandler(ProcessDirectory);
				}

				if (events_ != null)
				{
					if (events_.FileFailure != null)
					{
						scanner.FileFailure += events_.FileFailure;
					}

					if (events_.DirectoryFailure != null)
					{
						scanner.DirectoryFailure += events_.DirectoryFailure;
					}
				}

				scanner.Scan(sourceDirectory, recurse);
			}
		}
예제 #2
0
        public void CreateZip(Stream outputStream, string sourceDirectory, bool recurse, IScanFilter fileFilter,
                              IScanFilter dicFilter)
        {
            NameTransform = new ZipNameTransform(sourceDirectory);
            this.sourceDirectory = sourceDirectory;

            using (this.outputStream = new ZipOutputStream(outputStream))
            {
            #if !NETCF_1_0
                if (password != null)
                {
                    this.outputStream.Password = password;
                }
            #endif

                var scanner = new FileSystemScanner(fileFilter, dicFilter);
                scanner.ProcessFile += ProcessFile;
                if (CreateEmptyDirectories)
                {
                    scanner.ProcessDirectory += ProcessDirectory;
                }

                if (events != null)
                {
                    if (events.FileFailure != null)
                    {
                        scanner.FileFailure += events.FileFailure;
                    }

                    if (events.DirectoryFailure != null)
                    {
                        scanner.DirectoryFailure += events.DirectoryFailure;
                    }
                }

                scanner.Scan(sourceDirectory, recurse);
            }
        }