Membuat, Menulis, dan Membaca File Teks

Repost dari artikel saya di PC Mild 21/2010

Salah satu aktivitas yang paling sering dilakukan oleh sebuah program adalah berurusan dengan file. Hal paling mendasar dalam memanipulasi file adalah yang berkaitan dengan file teks. Karena itu, mengerti bagaimana membuat, menulis, dan membaca file teks menjadi salah satu dasar pemrograman Java yang harus dimiliki.

Logo Java

Dalam sebuah program kompleks, barangkali ada lebih dari ratusan baris yang akan berurusan dengan file. Akan sangat merepotkan jika ketika setiap baris tersebut Anda harus menuliskan prosesnya secara manual satu-persatu. Karena itu, alangkah baiknya jika membuat sebuah class bantuan yang berurusan dengan file.

  1. Untuk sekedar sebagai class bantuan dalam hal manipulasi file teks, maka yang perlu dibuat adalah method untuk menentukan lokasi file, membaca file, dan terakhir adalah menulis data ke dalam file. Semua method tersebut harus bisa diakses dari seluruh bagian program dengan dependensi seminim mungkin. Karena itu, sebaiknya method tersebut dibuat sebagai static method, dalam sebuah class tersendiri. Buatlah class seperti di bawah ini.
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    /**
     *
     * @author Haqqi
     */
    public class FileUtil {
      /* *******variables area****** */
    
      /* *****constructors area***** */
      /**
       * Untuk mencegah pembuatan object
       */
      private FileUtil() {
      }
    
      /* ********methods area******* */
      /**
       * Set the file based on relative path
       * @param filePath Path of the file
       * @return Generated file
       */
      public static File setFile(String filePath) {
        // membuat object file baru
        File file = null;
        // mencari path dari direktori kerja
        // bisa dicek dengan print
        String path = System.getProperty("user.dir")
            + File.separatorChar + filePath;
        try {
          // construct the file based on the path
          file = new File(path);
        } catch (Exception e) {
          e.printStackTrace();
        }
        // jika file tidak ditemukan, maka error
        if (file == null) {
          throw new RuntimeException();
        }
        // jika file tidak ada, maka membuat file baru
        if (!file.exists()) {
          try {
            file.createNewFile();
          } catch (IOException ex) {}
        }
        return file;
      }
    
      /**
       * Menulis array string ke dalam sebuah file. file yang akan
       * ditulis akan menjadi text file biasa.
       * @param text array string yang akan disimpan
       * @param file File
       * @return true jika sukses, false jika gagal
       */
      public static boolean fileWrite(String[] text, File file) {
        try {
          // membuat buffer
          BufferedWriter out = new BufferedWriter(new FileWriter(file));
          PrintWriter writeOut = new PrintWriter(out);
          // menulis text ke file
          for (int i = 0; i < text.length; i++) {
            writeOut.println(text[i]);
          }
          // menutup writer
          writeOut.close();
          return true;
        } catch (IOException e) {
          e.printStackTrace();
          return false;
        }
      }
    
      /**
       * Membaca file text
       * @param file
       * @return
       */
      public static String[] fileRead(File file) {
        try {
          // Membuat buffered reader
          BufferedReader readIn = new BufferedReader(new FileReader(file));
          // ArrayList untuk menyimpan string setiap baris
          ArrayList<String> list = new ArrayList<String>();
          // Object sementara
          String data;
          // Membaca setiap baris sampai akhir
          while ((data = readIn.readLine()) != null) {
            list.add(data);
          }
          // Menutup reader
          readIn.close();
          // mengembalikan array dalam bentuk string
          return list.toArray(new String[0]);
        } catch (IOException e) {
          e.printStackTrace();
          return null;
        }
      }
    }
    
  2. Coba Anda pelajari sekilas class untuk manipulasi file di atas. Method setFile() akan menentukan lokasi file dan membuat object dari class File agar mudah diakses oleh berbagai method lain. Jika file yang diinginkan tidak ditemukan, maka program akan membuat file tersebut. Method ini cukup memudahkan dan mempersingkat proses pembuatan object file. Berikutnya, Anda cukup memanggil method tersebut dengan:
    File file = FileUtil.setFile("coba.txt");
  3. Setelah file sudah di-set, maka method yang lainnya bisa dipergunakan. Untuk membaca file, Anda cukup memanggil method:
    String[] hasil = FileUtil.fileRead(file);
    // hanya untuk mengecek isi file
    for (String baris : hasil) {
      System.out.println(baris);
    }
    
  4. Sedangkan untuk menulis data ke dalam file tersebut, juga sangat mudah. Anda cukup menyiapkan data dalam bentuk array string, yang setiap elemennya merupakan baris dari teks. Setelah itu, tinggal memanggil method berikutnya:
    String[] text = {"Baris Satu", "Baris Dua", "Ini yang Ketiga"};
    FileUtil.fileWrite(text, file);
  5. Untuk mencobanya, Anda bisa membuat sebuah class Tester seperti di bawah ini.
    import java.io.File;
    
    public class Tester {
      public static void main(String[] args) {
        File file = FileUtil.setFile("coba.txt");
        String[] text = {"Baris Satu", "Baris Dua", "Ini yang Ketiga"};
        FileUtil.fileWrite(text, file);
        String[] hasil = FileUtil.fileRead(file);
        // hanya untuk mengecek isi file
        for (String baris : hasil) {
          System.out.println(baris);
        }
      }
    }
    

Tampilan command line

Mudah dan sangat bermanfaat bukan? Selamat mencoba.

Download source code secara keseluruhanArtikel ini telah dipublikasikan di media cetak tabloid PC Mild edisi 21 tahun 2010 lalu.

3 Comments

  1. gan, klo bwat bca file txt tiap baris aja gmana??
    misal yang ingin ditampilkan baris kedua aja,
    jd gk kseluruhan isi txt di tampilkan

    Reply

Leave a Comment.