diff --git a/src/ICSharpCode.SharpZipLib/Zip/FastZip.cs b/src/ICSharpCode.SharpZipLib/Zip/FastZip.cs
index aba4ffaea..6c7e106e2 100644
--- a/src/ICSharpCode.SharpZipLib/Zip/FastZip.cs
+++ b/src/ICSharpCode.SharpZipLib/Zip/FastZip.cs
@@ -375,6 +375,49 @@ public void CreateZip(Stream outputStream, string sourceDirectory, bool recurse,
/// The directory filter to apply.
/// true to leave open after the zip has been created, false to dispose it.
public void CreateZip(Stream outputStream, string sourceDirectory, bool recurse, string fileFilter, string directoryFilter, bool leaveOpen)
+ {
+ var scanner = new FileSystemScanner(fileFilter, directoryFilter);
+ CreateZip(outputStream, sourceDirectory, recurse, scanner, leaveOpen);
+ }
+
+ ///
+ /// Create a zip file.
+ ///
+ /// The name of the zip file to create.
+ /// The directory to source files from.
+ /// True to recurse directories, false for no recursion.
+ /// The file filter to apply.
+ /// The directory filter to apply.
+ public void CreateZip(string zipFileName, string sourceDirectory,
+ bool recurse, IScanFilter fileFilter, IScanFilter directoryFilter)
+ {
+ CreateZip(File.Create(zipFileName), sourceDirectory, recurse, fileFilter, directoryFilter, false);
+ }
+
+ ///
+ /// Create a zip archive sending output to the passed.
+ ///
+ /// The stream to write archive data to.
+ /// The directory to source files from.
+ /// True to recurse directories, false for no recursion.
+ /// The file filter to apply.
+ /// The directory filter to apply.
+ /// true to leave open after the zip has been created, false to dispose it.
+ public void CreateZip(Stream outputStream, string sourceDirectory, bool recurse, IScanFilter fileFilter, IScanFilter directoryFilter, bool leaveOpen = false)
+ {
+ var scanner = new FileSystemScanner(fileFilter, directoryFilter);
+ CreateZip(outputStream, sourceDirectory, recurse, scanner, leaveOpen);
+ }
+
+ ///
+ /// Create a zip archive sending output to the passed.
+ ///
+ /// The stream to write archive data to.
+ /// The directory to source files from.
+ /// True to recurse directories, false for no recursion.
+ /// For performing the actual file system scan
+ /// The is closed after creation.
+ private void CreateZip(Stream outputStream, string sourceDirectory, bool recurse, FileSystemScanner scanner, bool leaveOpen)
{
NameTransform = new ZipNameTransform(sourceDirectory);
sourceDirectory_ = sourceDirectory;
@@ -390,7 +433,6 @@ public void CreateZip(Stream outputStream, string sourceDirectory, bool recurse,
}
outputStream_.UseZip64 = UseZip64;
- var scanner = new FileSystemScanner(fileFilter, directoryFilter);
scanner.ProcessFile += ProcessFile;
if (this.CreateEmptyDirectories)
{
diff --git a/test/ICSharpCode.SharpZipLib.Tests/Zip/FastZipHandling.cs b/test/ICSharpCode.SharpZipLib.Tests/Zip/FastZipHandling.cs
index 259bde43b..e3b43d643 100644
--- a/test/ICSharpCode.SharpZipLib.Tests/Zip/FastZipHandling.cs
+++ b/test/ICSharpCode.SharpZipLib.Tests/Zip/FastZipHandling.cs
@@ -238,7 +238,7 @@ private void TestFileNames(IEnumerable names)
nameCount++;
}
- zippy.CreateZip(tempZip.Filename, tempDir.Fullpath, true, null, null);
+ zippy.CreateZip(tempZip.Filename, tempDir.Fullpath, true, null);
using (ZipFile z = new ZipFile(tempZip.Filename))
{