Minggu, 17 Agustus 2014

Bekerja dengan file dan folder pada Java

Hampir semua aplikasi bekerja dengan file/folder dan Java sebagai bahasa Bytecode mempunyai keunggulan dibandingkan dengan bahasa script. Aplikasi Java yang berbasis web dapat dikombinasikan dengan 'Java yang berjalan pada desktop'. Ini menjadikan Java dapat bekerja dengan file jauh lebih dalam.

Sebagai contoh sederhana, website keepvid.com dapat mengkonversi video-video yang ada pada url kedalam bentuk yang bisa kita download. Tentu saja ini tidak dapat dilakukan oleh bahasa script. Oleh karena itu, keepvid.com membutuhkan Java diaktifkan untuk bisa bekerja dengan baik. Ya, begitulah salahsatu keunggulan Java diantara keunggulannya yang lain.

Pada tulisan kali ini, saya akan membahas tentang modifikasi file/folder pada Java menggunakan Spring MVC, class yang kita butuhkan adalah java.io.File dan perlu dicatat bahwa tutorial ini menggunakan Linux file/folder system.

Berikut adalah cara bekerja dengan file/folder;


1. Membuat folder

@RequestMapping("/buat_direktori")
@ResponseBody
public String getBuatDirektory() {
  
    //definisikan path
    File path = new File("/home/nitza/direktori");
  
    //jika path belum ada, buat path baru
    if(!path.exists()) {
 path.mkdirs();
    } 
  
    return "ok";
}


2. Me-rename file

@RequestMapping("/rename_file")
@ResponseBody
public String getTestRenameFile() {
  
    //file yang ada di server
    File fileYgAda = new File("/home/nitza/resources/folder_temp/sesuatu.png");
  
    //buat file kosong terlebih dahulu
    File fileBaru = new File("/home/nitza/resources/folder_temp/berubah.png");
  
    if(fileYgAda.renameTo(fileBaru)){
        return "berhasil";
    }
    else {
        return "gagal";
    }
}


3. Memindahkan file pada folder yang lain

@RequestMapping("/pindah_file")
@ResponseBody
public String getPindahFile() {
    //file yang ada di server
    File fileYgAda = new File("/home/nitza/resources/folder_temp/bolang.png");
  
    //buat file baru
    File fileBaru = new File("/home/nitza/resources/bolang.png");
  
    if(fileYgAda.renameTo(fileBaru)){
        return "berhasil";
    }
    else {
        return "gagal";
    }
}


4. Copy file dengan linux command
Metode ini sedikit tricky tetapi sangat berguna. Dan metode ini memberika kita akses untuk menjalankan berbagai macam command pada Linux. Tetapi yang dibahas dibawah hanyalah perintah untuk copy file dengan syntax cp

@RequestMapping("/copy_file")
@ResponseBody
public String getCopyFile() throws IOException {

    Runtime.getRuntime().exec("cp /home/nitza/resources/folder_temp/kucing.png /home/nitza/resources/folder_temp/kucingx.png");
  
    return "ter-copy";
}



5. Copy file dengan Apache Commons library

@RequestMapping("/copy_file_b")
@ResponseBody
public String getCopyFileB() throws IOException {
 //file yang ada di server
 File fileYgAda = new File("/home/nitza/resources/folder_temp/kambing.png");
  
 //buat file kosong terlebih dahulu
 File fileBaru = new File("/home/nitza/resources/folder_temp/kambingb.png");
  
 FileUtils.copyFile(fileYgAda, fileBaru);
  
 return "ter-copy";
}


Masih banyak method-method pada java.io.File yang harus di-explore seperti isDirectory(), isFile(), exists() dan lain sebagainya. Dan untuk bahan bacaan lebih lengkap tentang java.io.File dapat ditemukan pada berikut; http://docs.oracle.com/javase/7/docs/api/java/io/File.html