The Microsoft Visual J# .NET 1.1 Class Library (
vjslib.dll) contains methods you can use to compress a file. The following code demonstrates how to use them.
/* Code to zip a file/folder using Visual J# library */
using System;
using System.IO;
using java.util.zip;
using java.util;
using java.io;
namespace Zipper
{
/// <summary>
/// This Class provides methods to Zip a file vjslib
/// c:\windows\microsoft.net\framework\v1.1.4322\vjslib.dll
/// </summary>
public class Zipper
{
#region Constructor
public Zipper(){}
#endregion Constructor
#region Void Methods
/*CreateZipFile Method expects the path to be zipped.
* The path could be a directory or a single file*/
public void CreateZipFile(string sPath)
{
FileOutputStream stream1 = null;
ZipOutputStream stream2 = null;
if (System.IO.File.Exists(sPath))
{
FileInfo info2 = new FileInfo(sPath);
stream1 = new FileOutputStream(sPath.Replace
(info2.Extension, ".zip"));
stream2 = new ZipOutputStream(stream1);
this.ZipOneFile(stream1, stream2, sPath);
}
else if (Directory.Exists(sPath))
{
stream1 = new FileOutputStream(sPath + ".zip");
stream2 = new ZipOutputStream(stream1);
DirectoryInfo info1 = new DirectoryInfo(sPath);
this.ZipDirectory(stream1, stream2, info1, sPath);
}
stream2.close();
stream1.close();
stream2.flush();
stream1.flush();
}
private void CopyStream(FileInputStream src, ZipOutputStream
dest)
{
InputStreamReader reader1 = new InputStreamReader(src);
OutputStreamWriter writer1 = new OutputStreamWriter(dest);
while (reader1.ready())
{
writer1.write(reader1.read());
}
writer1.flush();
}
/*ZipDirectory Method zips the entire directory*/
private void ZipDirectory(FileOutputStream fos, ZipOutputStream
zos, DirectoryInfo di, string SRootDir)
{
FileInfo[] infoArray2 = di.GetFiles();
foreach (FileInfo info2 in infoArray2)
{
ZipEntry entry1 = new ZipEntry
(info2.FullName.Substring(SRootDir.LastIndexOf(@"\")));
entry1.setMethod(8);
zos.putNextEntry(entry1);
FileInputStream stream1 = new FileInputStream
(info2.FullName);
this.CopyStream(stream1, zos);
zos.closeEntry();
stream1.close();
}
DirectoryInfo[] infoArray1 = di.GetDirectories();
foreach (DirectoryInfo info1 in infoArray1)
{
this.ZipDirectory(fos, zos, info1, SRootDir);
}
}
/*ZipOneFile Method zips the file*/
private void ZipOneFile(FileOutputStream fos, ZipOutputStream
zos, string sFullName)
{
ZipEntry entry1 = new ZipEntry(sFullName.Substring
(sFullName.LastIndexOf(@"\")));
entry1.setMethod(8);
zos.putNextEntry(entry1);
FileInputStream stream1 = new FileInputStream(sFullName);
this.CopyStream(stream1, zos);
zos.closeEntry();
stream1.close();
}
#endregion Void Methods
}
}