I found a bug, when compressing(actually archiving) a .rar or .zip file into segments, particularly if the file is large enough to generate more than one segment, DotNetZip will throw a "FileNotFoundException", saying that the XXX.z01 doesn't exists.
From the code, it seems the method WantReadAgain(file: ZipEntry.Writer.cs) returns true if compressed size is larger than original size, and that will direct to method "TruncateBackward" (file: ZipSegmentedStream.cs) which generates the exception.
the exception is thrown from the following code:
// get a new temp file, try 3 times:
for (int i = 0; i < 3; i++)
_currentTempName = SharedUtilities.InternalGetTempFileName();
File.Move(CurrentName, _currentTempName); // move the .z0x file back to a temp name
if (i == 2) throw;