Re: Java Inflater problem decompressing packfile

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



my entire testing class is below. just change the file path string in the
first line in test4.


package server_test2;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.util.zip.Inflater;

public class InflaterTest2 {

	public InflaterTest2() {
	}

	public void test4() {
		try {
			byte[] packFile = readFile2("/Users/marcos/GitProxyCache/jedit.pack");

			byte [] packDataWindow = new byte[8000];

			//the below object is the .classpath blob. works fine
			System.arraycopy(packFile, 4828 + 2, packDataWindow, 0,
packDataWindow.length); 

			//the below object is the .project blob. works fine
			//System.arraycopy(packFile, 4978 + 2, packDataWindow, 0,
packDataWindow.length); 
			
			//the below object is the top-level tree. works fine
			//System.arraycopy(packFile, 5171 + 2, packDataWindow, 0,
packDataWindow.length); 

			//the below object is source code notes blob. works fine
			//System.arraycopy(packFile, 5760 + 3, packDataWindow, 0,
packDataWindow.length); 

			//the below object is a build file blob. works fine
			//System.arraycopy(packFile, 8619, packDataWindow, 0,
packDataWindow.length); 
			
			//THE BELOW OBJECT FAILS TO INFLATE
			//IT CAUSES an "incorrect data check" error
       		//Object starts at index 9470
       		//Type = 3, Decompressed size = 51060 (uses 2 extra size bytes)
			//System.arraycopy(packFile, 9470 + 3, packDataWindow, 0,
packDataWindow.length); 

			Inflater decompresser = new Inflater();
			decompresser.setInput(packDataWindow, 0, packDataWindow.length);
			byte[] result = new byte[60000];
			int resultLength = 0;
			resultLength = decompresser.inflate(result);
			
			String outputString = new String(result, 0, resultLength, "UTF-8");
			System.out.println(outputString);

			System.out.println("------- End Decompressed Output -------");
			int numCompressed = (int) decompresser.getBytesRead();
			System.out.println("# Bytes Compressed: " + numCompressed);
			decompresser.end();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public byte [] readFile2(String fileName) {
		byte [] input2 = null;
	    File tempPackInputFile2 = new File(fileName);
		DataInputStream tempPackInputStream2;
		try {
			tempPackInputStream2 = new DataInputStream(new
FileInputStream(tempPackInputFile2));
			long tempPackLength2 = tempPackInputFile2.length();
			input2 = new byte[(int) tempPackLength2];
			tempPackInputStream2.readFully(input2);
		    tempPackInputStream2.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    return input2;
	}

	public static void main(String[] args) {
		InflaterTest2 app = new InflaterTest2();
		app.test4();
		System.out.println("Done.");
	}

}

--
View this message in context: http://git.661346.n2.nabble.com/Java-Inflater-problem-decompressing-packfile-tp6278154p6280285.html
Sent from the git mailing list archive at Nabble.com.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]