-4

в приведенном ниже коде я могу преобразовать файл в gzip, но здесь я предоставляю местоположение для ввода & выход статически. Но мне нужно предоставить имя файла динамическиКак сжать файл в формате GZip?

пример здесь я использую

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

здесь вместо home6.jpg я могу дать что-либо динамически

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

Статические значения - это просто переменные, которые вы установили и переданные в качестве параметров в методы gzip. Как вы хотите предоставить динамическое имя файла? Существует много возможностей для вас и многие API, которые предоставляют методы для этого. –

+0

'String source_filepath = args [0]' возможно? – Henry

+0

просто использовать 7z (7zip имеет интерфейс командной строки) –

ответ

0

Просто получить его из команды аргументы:

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

Обратите внимание, что вы, вероятно, захотите добавить некоторую проверку ошибок здесь, чтобы убедиться, что вы фактически получаете два аргумента командной строки, файл существует и т. д.

+0

Исключение в потоке «основного» java.lang.ArrayIndexOutOfBoundsException: 0 \t в CompressFileGzip.main (CompressFileGzip.java:20) пожалуйста, помогите – raghu

+0

@raghu Вы должны фактически передать команду линейные аргументы – Mureinik

Смежные вопросы