APLIKASI ZIP DENGAN JAVA NETBEANS



Kompresi Zip merupakan proses memperkecil ukuran data agar dapat disimpan dengan lebih efisien dan juga lebih mempercepat waktu ketika data tersebut di transfer.Gambaran konsep kompressi mirip dengan konsep mencontek.Bayangkan saat ujian, siswa A menuliskan jawaban pada selembar kertas, melipat-lipat kertas tersebut, lalu melemparnya kepada siswa B. siswa B menangkapnya, membuka lipatan kertas, dan membaca jawaban yang tertera.
Perhatikan, kertas yang terlipat bisa dibayangkan sebagai sebuah file yang dikompress, ukurannya yang lebih kecil membuatnya untuk berpindah tangan. Tetapi untuk mendapatkan ukuran yang lebih kecil dan kecepatan transfer, ada yang harus dibayar sebagai konsekuensinya. Sang penerima (siswa B), harus membuka lipatan kertas tersebut sebelum dapat membaca jawaban ujian. Kita dapat membayangkan proses ini sebagai proses dekompressi, ketika file zip sudah kita terima tentu kita akan membukanya dengan melakukan dekompresi.Mungkin seperti itu gambarannya.
Kalau kita sudah paham, kita langsung saja bagaimana membuat sebuah aplikasi kompresi tersebut.

1. Buatlah sebuat antar muka di Netbeans yang kita sebut sebagai GUI [graphic user intervice] seperti di bawah ini.


2. Sesuaikan nama variable dari setiap form agar dalam pemanggilan variable lebih jelas.


Button 1:
◦ Text: SaveTo
◦ Variable Name: saveToButton
Button 2:
◦ Text: Add Files
◦ Variable Name: addButton
Button 3:
◦ Text: Remove Files
◦ Variable Name: removeButton
Text field
◦ Text: kosong
◦ Variable Name: jTextField1
List
◦ Model: kosong
◦ Variable Name: jList1

3. Setelah itu kita tambahkan JFileChooser, File, dan juga DefaultListModel pada FormAwal
tambahkan juga di dalam constructor inisialisasi untuk objek dari DefaultListModel dan juga setting model untuk jList1.


Private jFileChooser chooser
private DefaultListModel ListModel;
private File fileSave;

public FormAwal(){
       initComponents();
       listModel = New DefaultListModel();
       jList1.setModel(listModel);
}

4. Menambahkan event ke dalam Button SaveTo dengan cara  Klik kanan pada
Button SaveTo > pilih 'Events' > pilih 'Action' > pilih 'actionPerformed'.Kemudian tambahkan kode beribut.



chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setMultiSelectionEnabled(false);
 if(chooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
 fileSave = chooser.getSelectedFile();
 if (!chooser.getSelectedFile().getName().toLowerCase().endsWith(".zip")) {
  fileSave = new File(fileSave.getPath() + ".zip");
}
if(fileSave == null) {
jTextField1.setText("");
} else {
  jTextField1.setText(fileSave.getPath());
 }

5.Lakukan proses yang sama untuk ButtonAddFiles tambahkan code di bawah.



chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setMultiSelectionEnabled(true);
    if(chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
File[] files = chooser.getSelectedFiles();
for(File file: files) {
listModel.addElement(file);
  }

6. Perlakukan yang sama juga pada Button RemoveFile lalu tambahkan code berikut.


Object[] selected = jList1.getSelectedValues();
if(selected.length != 0) {
for(Object e: selected) {
listModel.removeElement(e);
  }
}

7. Tambahkan code berikut di di FormAwal.
 

8.Yang terakhir tambahkan kembali event pada Button Create lalu sisipkan code berikut.


if(fileSave == null) {
showMessage("'Save To' kosong");

} else if(listModel.getSize() == 0) {
 showMessage("File kosong");
} else {
ZipOutputStream zipOutputStream = null;
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(fileSave);
zipOutputStream = new ZipOutputStream(fileOutputStream);
byte[] buffer = new byte[1024];
Enumeration<File> enumeration = (Enumeration<File>) listModel.elements();
while (enumeration.hasMoreElements()) {
File file = enumeration.nextElement();
FileInputStream stream = null;
try {
stream = new FileInputStream(file);
ZipEntry entry = new ZipEntry(file.getName());
zipOutputStream.putNextEntry(entry);
for (int i = stream.read(buffer); i != -1; i = stream.read(buffer)) {
zipOutputStream.write(buffer, 0, i);
}
zipOutputStream.closeEntry();
} catch (IOException exception) {
} finally {
if (stream != null) {
stream.close();
}
}
}
} catch(IOException exception) {
} finally {
if (zipOutputStream != null) {
try {
zipOutputStream.close();
} catch (IOException ex) {
}
}
}
resetData();

Jika sudah tidak ada error. Tambahkan kode program berikut ke dalam main method yang ada
di kelas ZipMaker.java



public static void main(String[] args) {
// TODO code application logic here
new FormAwal().setVisible(true);
}

Oke selesai, tinggal kita coba Runing.

Comments