getValue
. The complete checksum object can also be reset
so it can be used again with new data.
using System;
using System.IO;
using ICSharpCode.SharpZipLib.Core;
using ICSharpCode.SharpZipLib.GZip;
class MainClass
{
public static void Main(string[] args)
{
using (Stream inStream = new GZipInputStream(File.OpenRead(args[0])))
using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) {
byte[] buffer = new byte[4096];
StreamUtils.Copy(inStream, outStream, buffer);
}
}
}
using System;
using System.IO;
using ICSharpCode.SharpZipLib.GZip;
using ICSharpCode.SharpZipLib.Core;
class MainClass
{
public static void Main(string[] args)
{
using (Stream s = new GZipOutputStream(File.Create(args[0] + ".gz")))
using (FileStream fs = File.OpenRead(args[0])) {
byte[] writeData = new byte[4096];
Streamutils.Copy(s, fs, writeData);
}
}
}
}
using System;
using System.IO;
using ICSharpCode.SharpZipLib.Core;
using ICSharpCode.SharpZipLib.LZW;
class MainClass
{
public static void Main(string[] args)
{
using (Stream inStream = new LzwInputStream(File.OpenRead(args[0])))
using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) {
byte[] buffer = new byte[4096];
StreamUtils.Copy(inStream, outStream, buffer);
// OR
inStream.Read(buffer, 0, buffer.Length);
// now do something with the buffer
}
}
}
You should never have a need to access this class directly. TarBuffers are created by Tar IO Streams.
TarEntries that are created from the header bytes read from an archive are instantiated with the TarEntry( byte[] ) constructor. These entries will be used when extracting from or listing the contents of an archive. These entries have their header filled in using the header bytes. They also set the File to null, since they reference an archive entry not a file.
TarEntries that are created from files that are to be written into an archive are instantiated with the CreateEntryFromFile(string) pseudo constructor. These entries have their header filled in using the File's information. They also keep a reference to the File for convenience when writing entries.
Finally, TarEntries can be constructed from nothing but a name. This allows the programmer to construct the entry by hand, for instance when only an InputStream is available for writing to the archive, and the header information is constructed from other information. In this case the header fields are set to defaults and the File is set to null.
Read()
setInput(input, 0, input.length)
.
setDictionary(dict, 0, dict.Length)
.
NeedsInput()
returns true
strstart + DeflaterConstants.MAX_MATCH <= window.length.
prev[index & WMASK]
points to the previous index that has the
same hash code as the string starting at index. This way
entries with the same hash code are in a linked list.
Note that the array should really be unsigned short, so you need
to and the values with 0xffff.
public Inflater(bool noHeader)
passing true
if there is no Zlib header information
The usage is as following. First you have to set some input with
SetInput()
, then Inflate() it. If inflate doesn't
inflate any bytes there may be three reasons:
SetInput()
.
NOTE: IsNeedingInput() also returns true when, the stream is finished.
SetDictionary()
.def.deflate()
until all bytes from the input buffers
are processed.
using System;
using System.Text;
using System.Collections;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;
class MainClass
{
static public void Main(string[] args)
{
using (ZipFile zFile = new ZipFile(args[0])) {
Console.WriteLine("Listing of : " + zFile.Name);
Console.WriteLine("");
Console.WriteLine("Raw Size Size Date Time Name");
Console.WriteLine("-------- -------- -------- ------ ---------");
foreach (ZipEntry e in zFile) {
if ( e.IsFile ) {
DateTime d = e.DateTime;
Console.WriteLine("{0, -10}{1, -10}{2} {3} {4}", e.Size, e.CompressedSize,
d.ToString("dd-MM-yy"), d.ToString("HH:mm"),
e.Name);
}
}
}
}
}
using System;
using System.Text;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;
class MainClass
{
public static void Main(string[] args)
{
using ( ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]))) {
ZipEntry theEntry;
const int size = 2048;
byte[] data = new byte[2048];
while ((theEntry = s.GetNextEntry()) != null) {
if ( entry.IsFile ) {
Console.Write("Show contents (y/n) ?");
if (Console.ReadLine() == "y") {
while (true) {
size = s.Read(data, 0, data.Length);
if (size > 0) {
Console.Write(new ASCIIEncoding().GetString(data, 0, size));
} else {
break;
}
}
}
}
}
}
}
}
using System;
using System.IO;
using ICSharpCode.SharpZipLib.Core;
using ICSharpCode.SharpZipLib.Zip;
class MainClass
{
public static void Main(string[] args)
{
string[] filenames = Directory.GetFiles(args[0]);
byte[] buffer = new byte[4096];
using ( ZipOutputStream s = new ZipOutputStream(File.Create(args[1])) ) {
s.SetLevel(9); // 0 - store only to 9 - means best compression
foreach (string file in filenames) {
ZipEntry entry = new ZipEntry(file);
s.PutNextEntry(entry);
using (FileStream fs = File.OpenRead(file)) {
StreamUtils.Copy(fs, s, buffer);
}
}
}
}
}