Java Training: Input/Output
// GZIPFile
import java.io.*;
import java.util.zip.*;
/** ..... class GzipFile .....
* Reads the contents of the GZIP file and
* Writes data in GZIP file format
*
* Constructor
* public GzipFile(String fileName);
* Methods
* public void write(byte[] b);
* public byte[] read();
*
* @author Jeff Zhuk
**/
public class GzipFile {
private String fileName;
private FileOutputStream out;
private GZIPOutputStream go;
private FileInputStream in;
private GZIPInputStream goin;
/* Gzip(String iName) constructor is to store a name
* in - gzip file name Ex. Gzip gzip = new Gzip("myfile.zip");
*
*/
public Gzip (String iName){
fileName = iName;
}
/* writing array of bytes into a compressed file
* @param b array of bytes to write
*/
public void write(byte[] b) {
try{
out = new FileOutputStream(fileName);
go = new GZIPOutputStream(out);
System.out.println("length b.length "+ b.length);
go.write(b, 0, b.length);
go.close();
out.close();
} catch (IOException ioe) {
System.out.println("Gzip: " + ioe);
}
}
/*
* reading a compressed file to be decompressed
* into an initial array of bytes
* @return bb decompressed array of bytes
*/
public byte[] read() {
byte[] bb = null;
int byteread = 0;
int count = 1;
int NumberByteInArray = 0;
try{
in=new FileInputStream(fileName);
goin = new GZIPInputStream(in);
while(count != -1) {
byte[] ab = new byte[1];
count = goin.read(ab, count - 1, count);
if(count == 1)
NumberByteInArray++;
}
in.close();
} catch (IOException ioe) {
System.out.println("Gzip: " + ioe);
}
try{
in=new FileInputStream(fileName);
goin = new GZIPInputStream(in);
bb = new byte[NumberByteInArray];
while(byteread != -1) {
byteread = goin.read(bb, 0, NumberByteInArray);
}
in.close();
} catch (IOException ioe) {
System.out.println("Gzip: " + ioe);
}
return bb;
}
/* main(String args[])
* test method
* It writes a string of text into a compressed file
* Then it reads the compressed file and restore the string
*/
public static void main(String args[]){
String str ="Test .... Test";
byte[] b = new byte[str.length()];
//String To Byte
str.getBytes(0,str.length(),b,0);
GzipFile nn = new GzipFile("itschool.zip");
nn.write(b);
byte[] out = nn.read();
String s = new String(out);
System.out.println("reading compressed bytes:" + s);
}//end main
} // End Class