GZIP görüntüsüne GZIPOutputStream sınıfını kullanıyorum. GZIP dosyasını OutputStream üzerinden göndermeye çalışırken bozuk bir dosya alıyorum. FileOutputStream'e GZIP'yi nasıl yapacağımı biliyorum. Aşağıdaki kod mükemmel çalışıyor:Java'da GZIP dosyaları nasıl yapılır ve OutputStream aracılığıyla gönderirsiniz
Static private void GZIPCompress(String fileName)
{
File file = new File(fileName);
FileInputStream fis = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
fis.read(data);
FileOutputStream fos = new FileOutputStream(fileName + ".gz");
GZIPOutputStream gzos = new GZIPOutputStream(fos);
gzos.write(data);
fos.close();
fis.close();
}
çıktı dosyası myfile.png.gz ve şu ayrıntıları sahiptir:
myfile.png.gz: FAT dosya sistemi gzip sıkıştırılmış veriler, (bir dosyayı gzip ve OutputStream'e göndermek çalıştığınızda MS-DOS, OS/2, NT)
Benim sorundur. Bir sunucuyla çalıştığım için bunu sunucumdan arıyorum ve yuvaları kullanıyorum.
Static void SendGZIPFile(String fileName, OutputStream os)
{
DataOutputStream dos = new DataOutputStream(os);
File file = new File(fileName);
FileInputStream fis = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
byte[] dataAux = new byte[(int) file.length()];
dos.writeBytes("HTTP/1.1 200 OK\r\n");
dos.writeBytes("Content-Type: application/x-gzip \r\n");
dos.writeBytes("Content-Disposition: form-data; filename="+"\""+fileName+".gz"+"\""+"\n");
dos.writeBytes("\r\n\r\n");
dos = new DataOutputStream(new GZIPOutputStream(os));
fis.read(data);
dos.write(data);
dos.close();
fis.close();
gzos.close();
}
Ne olsun hiçbir şey içeren bir bozuk GZIP dosyasıdır:
myfile.gz veri
ben yanlış bir şey yapıyorum düşünüyorum: Burada ayrıntıları vardır GZipping yaparken arasındaki ayrıntılarını fark ettim. Bunu almak için aşağıdaki komutu kullanın:
Meraktan soruyorum, neden el HTTP yapıyor yerine kullanıyor kütüphane/framework? – RAnders00
PNG zaten sıkıştırılmıştır, bu yüzden GZIP'yi denemeye çalışmanız da daha büyük hale getirecektir. –
Ayrıca "SendGZIPFile (fileName, outputStream)" diyen kısmı da gösterebilir misiniz? – RAnders00