-4

im folgenden Code kann ich eine Datei in gzip konvertieren, aber hier stelle ich den Speicherort für die Eingabe & Ausgabe statisch. Aber ich muss hier die Dateinamen dynamischWie komprimiere ich eine Datei im GZip-Format?

Beispiel bieten ich verwende

String source_filepath = "C:\\Users\\abc\\Desktop\\home6.jpg"; 
String destinaton_zip_filepath =C:\\Users\\abc\\Desktop\\home6.gzip"; 

hier anstelle von home6.jpg kann ich alles dafür geben, dynamisch

import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.zip.GZIPOutputStream; 


public class CompressFileGzip { 

    public static void main(String[] args) { 

     String source_filepath = "C:\\Users\\abc\\Desktop\\home6.jpg"; 

     String destinaton_zip_filepath = "C:\\Users\\abc\\Desktop\\home6.gzip"; 



     CompressFileGzip gZipFile = new CompressFileGzip(); 

     gZipFile.gzipFile(source_filepath, destinaton_zip_filepath); 

    } 

    public void gzipFile(String source_filepath, String destinaton_zip_filepath) { 

     byte[] buffer = new byte[1024]; 
     try {  
      FileOutputStream fileOutputStream =new FileOutputStream(destinaton_zip_filepath); 

      GZIPOutputStream gzipOuputStream = new GZIPOutputStream(fileOutputStream); 

      FileInputStream fileInput = new FileInputStream(source_filepath); 

      int bytes_read; 

      while ((bytes_read = fileInput.read(buffer)) > 0) { 

       gzipOuputStream.write(buffer, 0, bytes_read); 

      } 

      fileInput.close(); 

      gzipOuputStream.finish(); 

      gzipOuputStream.close(); 

      System.out.println("The file was compressed successfully!"); 

     } catch (IOException ex) { 

      ex.printStackTrace(); 

     } 

    } 

} 
+0

Die statischen Werte sind einfach Variablen, die Sie als Parameter für die gzip-Methoden festgelegt und übergeben haben. Wie möchten Sie einen dynamischen Dateinamen bereitstellen? Ihnen stehen viele Möglichkeiten und viele APIs zur Verfügung, die die entsprechenden Methoden bereitstellen. –

+0

'String source_filepath = args [0]' vielleicht? – Henry

+0

einfach 7z verwenden (7zip hat Command Line Interface) –

Antwort

0

Sie es einfach aus dem Befehl erhalten Zeilenargumente:

public static void main(String[] args) { 
    String source_filepath = args[0]; 
    String destinaton_zip_filepath = args[1]; 

Beachten Sie, dass Sie wahrscheinlich einige Fehlerprüfung cod hinzufügen möchten Hier stellen Sie sicher, dass Sie tatsächlich zwei Befehlszeilenargumente erhalten, die Datei existiert usw.

+0

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 \t bei CompressFileGzip.main (CompressFileGzip.java:20) bitte – raghu

+0

helfen @raghu Sie müssen tatsächlich den Befehl übergeben Zeilenargumente – Mureinik