. .

BAGIAN KE SEMBILAN: Menulis Teks File Di Java Program Pada Netbeans IDE

Posted by CHRISTIANTO D,WIBOWO | D3MI-2016 STMIK BUMI GORA On Sabtu, Januari 21, 2017 No comments

BAGIAN KE SEMBILAN: Write To A Text File In Java Pada Netbeans IDE, Sebelum kita meneruskan mempelajari pembelajaran ini, ada baiknya kita baca artikel-artikel sebelumnya yang terhubung dengan langkah-langkah pembelajaran ini (Link) BAHASA PEMROGRAMAN JAVA PADA NETBEANS IDE.

Menulis file pada Java program sedikit lebih mudah daripada membaca file. Untuk menulis ke file, kita akan menggunakan dua inbuilt classes: FileWriter class dan PrintWriter class.

Kita buka kembali Java program kita sebelumnya, pada BAGIAN KE SEMBILAN: Bagaimana Membaca Text File Di Java Pada Netbeans IDE dengan Package textfile, dan 2 Java class; FileData.java sebagai main class dan ReadFile.java sebagai child class yang menggunakan metode overloading untuk class saling melewati.

Class FileData.java
package textfiles;
import java.io.IOException;

/**
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class FileData {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String file_name = "D:\\@ WEB PROJECT\\@YU ERL IE\\JAVA N NETBEANS\\teks.txt";
    
        try {
            ReadFile file = new ReadFile(file_name);
            String[] aryLines = file.OpenFile();
        
            int i;
            for (i=0; i < aryLines.length; i++){
                System.out.println(aryLines[i]);
            }
        } 
        catch (IOException e){
            System.out.println("MAAF, FILE YANG ANDA CARI TIDAK DITEMUKAN");
            }
    } 
}

Class ReadFile.java
package textfiles;
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
/**
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class ReadFile {
    private String path;
    public ReadFile(String file_path){
        path=file_path;
    }
    public String[] OpenFile() throws IOException {
        FileReader fr = new FileReader(path);
        BufferedReader textReader = new BufferedReader(fr);
        
        int numberOfLines = readLines( );
        String[ ] textData = new String[numberOfLines];
        
        int i;
        for (i=0; i < numberOfLines; i++) {
             textData[ i ] = textReader.readLine();

        }
    textReader.close( );
    return textData;
   }
        int readLines() throws IOException {
            FileReader file_to_read = new FileReader(path);
            BufferedReader bf = new BufferedReader(file_to_read);
            
            String aLine;
            int numberOfLines = 0;
            
            while(( aLine = bf.readLine()) !=null){
                   numberOfLines++;
        }
            bf.close();
            
            return numberOfLines;
        }    
}

Dan sekarang kita membuat class baru dalam proyek kita dengan mengklik File> New File dari menu NetBeans. Pilih Java di bagian Kategori kotak dialog dan Class dari daftar Jenis File. Klik tombol Next di bagian bawah. Untuk nama Class kita beri nama class WriteFile.java, lalu klik Finish. Tambahkan tiga pernyataan berikut dan impor ke kode baru kita :

class WriteFile.java
package textfiles;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class WriteFile {
    
}

Jangan mengkhawatirkan dulu import java.io yang masih digarisbawahi karena kita belum menggunakan class yang di impor.
Ketika kita menulis Java program ke file, kita juga dapat memulai dari awal dan membuat segala sesuatu, atau kita dapat mulai di akhir dan menambahkannya ke file. Class FileWriter memungkinkan kita untuk menentukan hal tersebut. Kita akan menambahkan field yang menetapkan nilai yang ditambahkan untuk Class FileWriter. Kita juga akan menambahkan field untuk menetapkan nama file.
Kita tambah dua field berikut untuk kode kita, ditambah konstruktor :
package textfiles;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class WriteFile {
 
    private String path;
    private boolean append_to_file = false;
    
    public WriteFile(String file_path) {
        path = file_path;
    }
}
Field boolean disebut append_to_file dan telah diatur ke nilai false. Ini adalah nilai default untuk Class FileWriter, dan berarti kita tidak ingin menambahkan, tetapi menghapus segala sesuatu dalam file.
Konstruktor menetapkan nilai untuk field path (instance variable), yang merupakan nama dan lokasi file. Ini akan dapatk diserahkan ketika kita membuat objek baru dari  Class FileWriter.

Seperti yang telah disebutkan pada bagian sebelumnya, kita dapat menetapkan lebih dari satu konstruktor dalam kode kita. Kita dapat mengatur yang nilai kedua dan melewati dalam append. Dengan cara itu, pengguna juga dapat menggunakan konstruktor pertama dan menyerahkan nama file, atau nama file dan nilai append. Jadi tambahkan constructor berikut :
package textfiles;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class WriteFile {
   
    private String path;
    private boolean append_to_file = false;
    
    public WriteFile(String file_path) {
        path = file_path;
    }

    public WriteFile( String file_path , boolean append_value ) {
        path = file_path;
        append_to_file = append_value;
    }
}
Konstruktor kedua ini memiliki dua nilai antara kurung bulat, path file dan nilai append. Jika kita ingin menambahkan ke file, kita dapat menggunakan konstruktor ini saat membuat objek baru. Jika kita hanya ingin menimpa file teks maka kita dapat menggunakan konstruktor pertama.

Untuk dapat menulis ke file, tambahkan metode berikut di bawah ini dua konstruktor diatas:
package textfiles;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class WriteFile {
   
    private String path;
    private boolean append_to_file = false;
    
    public WriteFile(String file_path) {
        path = file_path;
    }

    public WriteFile( String file_path , boolean append_value ) {
        path = file_path;
        append_to_file = append_value;
    }
    public void writeToFile( String textLine ) throws IOException {

    }
}
public void writeToFile( String textLine ) throws IOException {
}
Metode ini tidak perlu mengembalikan nilai, jadi kita telah membuatnya hampa/kosong (void) - public void writeToFile. Di antara kurung bulat nama metode kita memiliki variabel String disebut textLine - String textLine. Ini jelas teks yang ingin kita tulis ke file. Sekali lagi,  kita perlu menambahkan "throws IOException" yang perlu kita lakukan untuk menangani berkas-kesalahan penulisan.

Hal pertama yang kita butuhkan dalam metode ini adalah objek FileWriter. FileWriter mengurus membuka file yang benar, dan menyimpan teks sebagai byte. Tambahkan baris kode berikut ke metode writeToFile :
FileWriter write = new FileWriter( path , append_to_file);
package textfiles;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class WriteFile {
   
    private String path;
    private boolean append_to_file = false;
    
    public WriteFile(String file_path) {
        path = file_path;
    }

    public WriteFile( String file_path , boolean append_value ) {
        path = file_path;
        append_to_file = append_value;
    }
    public void writeToFile( String textLine ) throws IOException {
        
        FileWriter write = new FileWriter( path , append_to_file);
    }
}
Jadi kita menciptakan objek FileWriter baru dengan nama write - FileWriter write. Di antara kurung bulat FileWriter kita mengirim nama dan lokasi file, ditambah nilai append - ( path , append_to_file). Ini baik akan menjadi true (menambahkan ke file) atau false (tidak menambahkan). Jika file dari nama yang kita lewati tidak ada, maka FileWriter menciptakannya untuk kita.

FileWriter menulis byte, namun. kita bisa menyerahkan teks biasa FileWriter dengan bantuan dari PrintWriter class. PrintWriter class memiliki beberapa metode cetak berguna, tapi perlu nama FileWriter saat membuat objek dari class. Jadi tambahkan baris kode ini ke metode kita:
PrintWriter print_line = new PrintWriter( write );
package textfiles;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class WriteFile {
   
    private String path;
    private boolean append_to_file = false;
    
    public WriteFile(String file_path) {
        path = file_path;
    }

    public WriteFile( String file_path , boolean append_value ) {
        path = file_path;
        append_to_file = append_value;
    }
    public void writeToFile( String textLine ) throws IOException {
        
        FileWriter write = new FileWriter( path , append_to_file);
        PrintWriter print_line = new PrintWriter( write );
    }
}
objek PrintWriter kita disebut print_line. Di antara kurung bulat dari PrintWriter, kita telah menambahkan nama objek FileWriter - new PrintWriter( write ); write/menulis berarti menambahkan sesuatu file ke FileWriter.
Untuk menambahkan teks ke file, ketik nama objek PrintWriter diikuti oleh sebuah titik:
print_line.
Begitu kita mengetik print_line"titik", NetBeans akan menampilkan daftar pilihan yang tersedia:
Yang kita akan gunakan adalah salah satu metode printf. Hal ini memungkinkan kita untuk melewati string ber-format teks untuk PrintWriter kita. Sebuah alasan yang baik untuk menggunakan printf adalah untuk menangani karakter baris baru. Setiap karakter baris baru berbeda, tergantung pada sistem operasi yang kita gunakan. System Windows akan menambahkan karakter "\r\n" untuk baris baru, System Unix menggunakan "\n". Menggunakan fungsi printf akan memastikan pengkodean yang benar, tidak peduli kita menggunakan platform apa saja.
Tambahkan baris kode berikut ke kode kita:
print_line.printf( "%s" + "%n" , textLine);
package textfiles;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class WriteFile {
   
    private String path;
    private boolean append_to_file = false;
    
    public WriteFile(String file_path) {
        path = file_path;
    }

    public WriteFile( String file_path , boolean append_value ) {
        path = file_path;
        append_to_file = append_value;
    }
    public void writeToFile( String textLine ) throws IOException {
        
        FileWriter write = new FileWriter( path , append_to_file);
        PrintWriter print_line = new PrintWriter( write );
        print_line.printf( "%s" + "%n" , textLine);
    }
}
Kita sudah menyerahkan metode printf dua jenis: satu ber-format for the text - "%s" + "%n", dan satunya lagi string - textLine kita ingin menulis ke file. Keduanya dipisahkan dengan koma - ( "%s" + "%n" , textLine); . Perhatikan "%s" + "%n" :  "%s" antara tanda kutip ganda berarti karakter string dari setiap panjang teks. "%n" berarti baris baru. Jadi kita mengatakan metode printf untuk memformat karakter string dan menambahkan baris baru di akhir. Teks yang sebenarnya yang perlu format akan berada setelah koma. Metode printf cukup berguna, dan kita akan melewati pilihan secara lebih rinci pada bagian selanjutnya. Tambahkan satu baris kode lagi untuk metode kita:
print_line.close();
package textfiles;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class WriteFile {
   
    private String path;
    private boolean append_to_file = false;
    
    public WriteFile(String file_path) {
        path = file_path;
    }

    public WriteFile( String file_path , boolean append_value ) {
        path = file_path;
        append_to_file = append_value;
    }
    public void writeToFile( String textLine ) throws IOException {
        
        FileWriter write = new FileWriter( path , append_to_file);
        PrintWriter print_line = new PrintWriter( write );
        print_line.printf( "%s" + "%n" , textLine);
        print_line.close();
    }
}
Baris kode ini menutup file teks dan membebaskan sumber daya yang kita gunakan.

Untuk menguji Class FileWriter baru kita, kembali ke Class FileData.java ,yang merupakan metode utama kita. Tambahkan baris berikut untuk membuat objek baru dari class WriteFile:
WriteFile data = new WriteFile( file_name , true );
package textfiles;
import java.io.IOException;

/**
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class FileData {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String file_name = "D:\\@ WEB PROJECT\\@YU ERL IE\\JAVA N NETBEANS\\teks.txt";
    
        try {
            ReadFile file = new ReadFile(file_name);
            String[] aryLines = file.OpenFile();
        
            int i;
            for (i=0; i < aryLines.length; i++){
                System.out.println(aryLines[i]);
            }
        } 
        catch (IOException e){
            System.out.println("MAAF, FILE YANG ANDA CARI TIDAK DITEMUKAN");
            }
        //==================================================================
        //   WRITE A FILE
        //==================================================================
        WriteFile data = new WriteFile( file_name , true );
    } 
}
Jadi kita telah menyiapkan sebuah objek WriteFile disebut data - WriteFile data . Di antara kurung bulat WriteFile, kita telah menambahkan dua hal: nama file, dan menambahkan nilai dari true -  file_name , true . Ini akan memastikan bahwa kedua konstruktor yang sudah kita buat dipanggil. Jika kita ingin hanya menimpa file, maka kode cukup seperti ini:
WriteFile data = new WriteFile( file_name );
Karena kita menetapkan nilai append default sebagai false, kita hanya perlu nama file jika kita ingin menimpa seluruh isi file tersebut.
Untuk memanggil metode writeToFile objek dari class WriteFile, tambahkan baris kode ini:
data.writeToFile( "Ini Adalah Baris Baru Dari Teks" );
package textfiles;
import java.io.IOException;

/**
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class FileData {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String file_name = "D:\\@ WEB PROJECT\\@YU ERL IE\\JAVA N NETBEANS\\teks.txt";
    
        try {
            ReadFile file = new ReadFile(file_name);
            String[] aryLines = file.OpenFile();
        
            int i;
            for (i=0; i < aryLines.length; i++){
                System.out.println(aryLines[i]);
            }
        } 
        catch (IOException e){
            System.out.println("MAAF, FILE YANG ANDA CARI TIDAK DITEMUKAN");
            }
        //==================================================================
        //   WRITE A FILE
        //==================================================================
        WriteFile data = new WriteFile( file_name , true );
        data.writeToFile( Ini Adalah Baris Baru Dari Teks" );
    } 

Agar pengguna mengetahui bahwa sesuatu telah terjadi/berubah, kita dapat mencetak sesuatu ke jendela Output, tambahkan juga baris kode ini :
System.out.println( "Teks File Akan Ditulis Ke :" );
package textfiles;
import java.io.IOException;

/**
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class FileData {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String file_name = "D:\\@ WEB PROJECT\\@YU ERL IE\\JAVA N NETBEANS\\teks.txt";
    
        try {
            ReadFile file = new ReadFile(file_name);
            String[] aryLines = file.OpenFile();
        
            int i;
            for (i=0; i < aryLines.length; i++){
                System.out.println(aryLines[i]);
            }
        } 
        catch (IOException e){
            System.out.println("MAAF, FILE YANG ANDA CARI TIDAK DITEMUKAN");
            }
        //==================================================================
        //   WRITE A FILE
        //==================================================================
        WriteFile data = new WriteFile( file_name , true );
        data.writeToFile( " Ini Adalah Baris Baru Dari Teks" );
        System.out.println( "Teks File Akan Ditulis Ke :" );
    } 
}
Tambahkan try … catch block untuk menulis/write teks kita :
try {
            WriteFile data = new WriteFile( file_name , true );
            data.writeToFile( " Ini Adalah Baris Baru Dari Teks" );
        }
        catch (IOException e) {
            System.out.println( e.getMessage() );
        }        
            System.out.println( "Teks File Akan Ditulis Ke :" ); 
package textfiles;
import java.io.IOException;

/**
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class FileData {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String file_name = "D:\\@ WEB PROJECT\\@YU ERL IE\\JAVA N NETBEANS\\teks.txt";
    
        try {
            ReadFile file = new ReadFile(file_name);
            String[] aryLines = file.OpenFile();
        
            int i;
            for (i=0; i < aryLines.length; i++){
                System.out.println(aryLines[i]);
            }
        } 
        catch (IOException e){
            System.out.println("MAAF, FILE YANG ANDA CARI TIDAK DITEMUKAN");
            }
        //==================================================================
        //   WRITE A FILE
        //==================================================================
        try {
            WriteFile data = new WriteFile( file_name , true );
            data.writeToFile( " Ini Adalah Baris Baru Dari Teks" );
        }
        catch (IOException e) {
            System.out.println( e.getMessage() );
        }        
            System.out.println( "Teks File Akan Ditulis Ke :" ); 
    }
}
Lihat dulu file teks.txt original yang sudah kita buat sebelumnya, saya menempatkan file teks.txt pada folder : D:\\@ WEB PROJECT\\@YU ERL IE\\JAVA N NETBEANS\\teks.txt :
Sekarang jalankan kode kita untuk mengujinya. kita harus melihat isi dari file teks kita dalam jendela Output diikuti dengan pesan bahwa "Teks File Akan Ditulis Ke :";
Jalankan programnya lagi dan kita akan melihat baris baru muncul :

Dan selesai bagian ini - sekarang kita dapat menulis ke file teks dan membaca isinya. Pada bagian berikutnya, kita akan belajar dan mengatasi pemrograman dengan Formulir Java. - Java Forms - 

0 komentar:

Posting Komentar