I am trying to load some GZIP-ed data from a resource in my .jar, but I get a java.io.IOException: Not in GZIP
format message.
When I load the same data from a file, I don't get any error. Why? (It is a maven project I compile with NetBeans)
Here is the test code generating the issue:
public static void main(String[] args) throws IOException {
byte[] dummy = new byte[10];
// Reading data from file
File f = new File("C:\\Temp\\422\\convert1900.data");
DataInputStream is = new DataInputStream(
new GZIPInputStream(new FileInputStream(f)));
while ( is.read(dummy) != -1 );
// Reading data from resource
InputStream ins = CompareTest2.class.getResourceAsStream(
"/net/cv/convert1900.data");
is = new DataInputStream(
new GZIPInputStream(ins)); // Issue happens here
while ( is.read(dummy) != -1 );
}
EDIT
Both 'files' have the same content.
EDIT 2
I just tried to count the number of bytes I get with both methods using the following code:
public static void main(String[] args) throws IOException {
int total = 0;
int retr = 0;
byte[] dummy = new byte[10];
// Reading data from file
File f = new File("C:\\Temp\\422\\convert1900.data");
InputStream is = new FileInputStream(f);
do {
retr = is.read(dummy);
if ( retr != -1 )
total += retr;
} while ( retr != -1 );
System.out.println("Total file: " + total);
// Reading data from resource
InputStream ins = CompareTest2.class.getResourceAsStream(
"/net/cv/convert1900.data");
total = 0;
retr = 0;
do {
retr = ins.read(dummy);
if ( retr != -1 )
total += retr;
} while ( retr != -1 );
System.out.println("Total resource: " + total);
}
and I get:
Total file: 9132744
Total resource: 16399085
Very strange !!
EDIT 3
I have just noticed the size of the resource in the .jar is 16399085 (uncompressed) instead of 9132744. It seems that the issue is in the compilation process.
May be I have an issue with the following in my pom.xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding> // UTF8
</configuration>
</plugin>