. .

BAGIAN KE SEMBILAN: Bagaimana Membaca Text File Di Java Pada Netbeans IDE

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

BAGIAN KE SEMBILAN: How to Read 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.

Memanipulasi file teks adalah keterampilan yang akan membekali kita dengan baik dalam keahlian dan pemahaman yang baik sebagai programer Java. Pada bagian ini, kita akan belajar bagaimana untuk membuka dan bagaimana menulis ke file teks. Tapi dengan file teks, berarti kita hanya menulis file dengan teks flat di dalamnya.
Kita dapat membuat file teks dalam program-program seperti :
  • Notepad pada komputer Windows,
  • TextEdit pada Mac,
  • Gedit di lingkungan Linux/Gnome.
Hal pertama yang akan kita lakukan adalah untuk membuka file teks dan membaca isinya.
Read - Membaca a Text File
Kita mulai sebuah proyek baru, memanggil package textfiles dan class FileData. Menambahkan pernyataan impor tepat di bawah baris package textfiles dan sebelum class FileData; dan jendela coding/editor coding "class FileData" akan terlihat seperti ini:
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) {
        // TODO code application logic here
    }  
}
Untuk menghadapi apa pun yang menjadi penyebab kesalahan-Error dengan penanganan berkas, tambahkan kode berikut untuk metode utama (teks dalam huruf tebal):
public static void main(String[ ] args) throws IOException {

}
Kita memberitahu Java bahwa metode utama akan menghasilkan IOException Error, dan bahwa itu harus ditangani. Kemudian, kita akan menambahkan try … catch block untuk menampilkan pesan kesalahan yang sesuai untuk pengguna, jika terjadi sesuatu yang salah.

Untuk membuka file teks, mari kita membuat Class baru. Jadi klik File>New File dari menu NetBeans di bagian atas. Buat file Java Class baru dan beri nama ReadFile. Ketika kelas baru dibuat, tambahkan tiga pernyataan impor berikut:
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
dan jendela coding/editor coding "class ReadFile" akan terlihat seperti ini:
package textfiles;
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
/**
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class ReadFile {
 
}
Perlu diingat baris kode impor, baik di class FileData maupun di class ReadFile masih ditandai/marked dengan garis bawah karena kita BELUM melakukan apa-apa dengan baris kode impor tersebut, dan ini adalah fitur NetBeans.
Kita akan membuat objek baru dari class ReadFile untuk membaca sebuah file. Tambahkan constructor berikut untuk kode kita di class ReadFile, bersama dengan field private String, yang kita beri nama path:
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;
    }
}
Yang kita lakukan ini adalah untuk melewati masuk kedalam nama sebuah file, dan kemudian menyerahkan nama file tersebut ke field path.
Masih ingat ? BAGIAN KE ENAM: Java Methods Passing Values - Melewati Nilai Metode Java Pada Netbeans IDE
Apa yang kita sekarang perlu lakukan adalah menciptakan/membuat sebuah metode yang mengembalikan semua baris kode dari file teks. Baris kode itu akan berada di sebuah array. Menambahkan metode deklarasi berikut yang akan membuka file :
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 {
     
    }
}
OUTPUT :
Jangan khawatir tentang garis bawah merah missing return statement: pesan itu akan hilang setelah kita menambahkan beberapa kode. Dan pesan itu adalah fitur default NetBeans yang ditambahkan karena kita belum memiliki pernyataan kembali. Perhatikan bahwa metode ini dibentuk untuk nilai kembali array String-  to return a String array :
public String[ ]
array ini akan berisi semua baris kode dari file teks.

Perhatikan juga, bahwa kita telah menambahkan "throws IOException" ke akhir header metode - public String[] OpenFile() throws IOException. Setiap metode yang berhubungan dengan membaca file teks membutuhkan ini. Java akan membuang kesalahan atas baris kode, dan mereka akan tertangkap dalam metode utama kita.
Setiap metode yang berhubungan dengan membaca file teks membutuhkan ini "throws IOException".
Untuk membaca karakter dari file teks, yang import java.io.FileReader; digunakan. Ini membaca byte dari file teks, dan setiap byte adalah karakter tunggal. Kita dapat membaca seluruh baris teks, tidak hanya karakter tunggal. Untuk melakukan ini, kita dapat meberikan FileReader kita ke sesuatu yang disebut import java.io.BufferedReader;BufferedReader memiliki metode yang berguna disebut ReadLine. Seperti namanya, digunakan untuk membaca seluruh baris, bukan hanya karakter tunggal. Apa BufferedReader lakukan adalah untuk menyimpan karakter dalam memori (buffer) sehingga mereka dapat dimanipulasi lebih mudah.
Tambahkan baris kode berikut yang membuat FileReader dan BufferedReader:
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);
    }
}
Kami menciptakan dua object baru di sini: satu adalah objek FileReader yang telah kita disebut fr; yang lain adalah objek  BufferedReader dengan nama textReader.

FileReader membutuhkan nama file untuk yang akan dibuka. Bagi kita, file path dan nama file sudah dipegang/berada di variabel field yang sudah kita beri nama path. Jadi kita bisa menggunakannya.

BufferedReader menangani objek FileReader diantara kurung bulat. Semua karakter dari file tersebut kemudian dilaksanakan di memori menunggu untuk dimanipulasi. Dan mereka berada di bawah nama variabel textReader.

Sebelum kita dapat membaca baris teks, kita perlu menyiapkan array. Setiap posisi dalam array akan memegang salah satu baris teks lengkap. Jadi tambahkan dua baris kode berikut ke kode kita:
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 = 3;
       String[ ] textData = new String[numberOfLines];
    }
}
Untuk saat ini, kita akan mengatur jumlah baris dalam 3 file teks - int numberOfLines = 3; . Tentu saja file teks dapat mengambil sejumlah baris text, dan kita biasanya tidak tahu berapa banyak yang harus kita ambil. Jadi kita akan mengubahnya segera. Kita akan menulis sebuah metode terpisah yang mendapat nomor baris dalam sebuah text file.

Baris kedua kode baru,mensetting array String. Jumlah posisi dalam array (ukurannya) diatur ke jumlah baris. Kita telah menempatkan ini antara kurung persegi - String[ ] textData = new String[numberOfLines];.

Untuk menempatkan semua baris teks dari file ke dalam setiap posisi dalam array, kita perlu loop. loop akan menjangkau setiap baris teks dan menempatkan setiap baris teks tersebut dalam array. Jadi kita perlu menambahkan kode berikut ke baris kode kita :
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 = 3;
        String[ ] textData = new String[numberOfLines];
     
        int i;
       for (i=0; i < numberOfLines; i++) {
             textData[ i ] = textReader.readLine();

        }
    }
}
Untuk loop berawal dari 0 sampai hanya kurang dari jumlah baris. Posisi Array selalu dimulai dari 0. 3 baris yang akan disimpan berarti berada pada posisi 0, 1, dan 2.

Baris kode yang mengakses baris teks dan menyimpannya dalam array adalah:
textData[ i ] = textReader.readLine(); 
Setelah tanda sama dengan yang kita miliki: 
= textReader.readLine(). 
Objek BufferedReader yang kita buat memegang semua karakter dari file teks dalam memori (buffer). Kita dapat menggunakan metode readLine() untuk membaca baris lengkap dari buffer. Setelah baris teks dibaca, kita akan menyimpan baris teks tersebut dalam posisi array:
textData[i] 
Variabel yang disebut "i" akan naik setiap kali putaran loop, sehingga akan melalui seluruh array untuk menyimpan baris teks. Tambakan dua baris kode berikut untuk menambah metode :
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 = 3;
        String[ ] textData = new String[numberOfLines];
     
        int i;
        for (i=0; i < numberOfLines; i++) {
             textData[ i ] = textReader.readLine();

        }
     textReader.close( );
     return textData;
   }
}
Metode ini menutup flushes buffer memori sementara yang disebut BufferedReader textReader.close( );. Baris kode kembali return textData; mengembalikan seluruh array. Perhatikan bahwa tidak ada tanda kurung diperlukan untuk nama array.
Bila Anda telah menambahkan kode, semua penanda/marked Error harusnya sudah menghilang. Maka metode kita akan terlihat seperti ini :

Masih ada masalah dalam jumlah baris, namun. kita telah men-set kode ini ke 3. Dan yang kita butuhkan adalah untuk lewat melalui file teks dan menghitung berapa banyak baris tersebut. Jadi tambahkan metode berikut untuk Class ReadFile kita:
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 = 3;
        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);
            
            String aLine;
            int numberOfLines =0;
            
            while ((aLines = bf.readLine()) !=null){
                   numberOfLines++;
        }
            bf.close();
            return numberOfLines;
        }
}
Metode baru ini disebut readLines, dan ditetapkan untuk mengembalikan nilai integer. Nilai integer ini adalah nomor baris file teks miliki. Perhatikan metode ini juga memiliki bagian IOException ke metode header.

Kode untuk men-set metode FileReader lainnya, dan BufferedReader lainnya. Untuk itu kita perlu putaran loop baris teks, dan kita memiliki ini:
while ((aLines = bf.readLine()) !=null){
                   numberOfLines++;
}
while loop terlihat agak berantakan. Tapi itu hanya untuk mengatakan "membaca setiap baris teks dan berhenti ketika nilai null tercapai - read each line of text and stop when a null value is reached." Dan jika tidak ada baris teks lagi dalam sebuah file teks, maka Java akan mengembalikan nilai ke null. Di dalam kurung keriting, kita naikkan counter yang disebut numberOfLines.

Akhirnya dua baris kode memory flush buffer disebut bf, dan mengembalikan jumlah baris - bf.readLine().

Untuk memanggil metode baru ini ke dalam tindakan, kita perlu merubah baris kode ini dalam metode OpenFile kita:
int numberOfLines = 3;
Rubah menjadi seperti ini :
int numberOfLines = readLines( );
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 = 3; RUBAH MENJADI 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;
        }    
}

Jadi, bukannya meng-hard-coding dalm menetapkan nomor baris, kita bisa memanggil metode baru dan mendapatkan nomor baris dalam file teks.

Dan saat ini kita menempatkan class baru untuk bekerja dan melihat apakah itu akan membuka file teks. Kembali ke class FileData kita, yang merupakan metode utama di dalamnya. Mengatur variabel string untuk menyimpan nama file 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";
    }
 
}
Pada tahap ini, kita perlu membuat file teks di suatu tempat di komputer kita. Kita menciptakan file teks sederhana di Notepad pada mesin Windows :

Nama file teks "teks.txt". Membuat file teks serupa di komputer kita sendiri. Catatan di mana kita menyimpan file karena kita perlu path file juga (alamat lokasi file teks pada komputer kita sendiri):
String file_name = "D:\\@ WEB PROJECT\\@YU ERL IE\\JAVA N NETBEANS\\teks.txt";
Jadi berkas "teks.txt" kita disimpan di drive D:\\@ WEB PROJECT\\@YU ERL IE\\JAVA N NETBEANS\\teks.txt.  Rubah lokasi/path file sesuai dengan path file kita berada, jika diperlukan.

Hal berikutnya yang harus dilakukan adalah membuat objek baru dari ReadFile class. Kemudian kita dapat memanggil metode yang membuka file tersebut. Tapi kita bisa melakukan hal ini dalam try … catch block. Tambahkan kode berikut, tepat di bawah variabel baris String kita:
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();
        }
        catch (IOException e){
            System.out.println( e.getMessage());
            }
    }
}
Jangan lupa tanda kurung keriting untuk try … catch block. Kita perlu satu pasang untuk bagian coba/try :
try {
            ReadFile file = new ReadFile(file_name);
            String[] aryLines = file.OpenFile();
        }
Baris pertama membuat sebuah objek ReadFile baru yang disebut file -  . Di antara kurung putaran ReadFile, kita menambahkan variabel file_name. Ini untuk menyerahkan konstruktor path file yang dibutuhkan.
Baris kedua kode men-set up array String disebut aryLines. Setelah tanda sama dengan, kita telah menyebut OpenFile method dari ReadFile class. Jika berhasil membuka file teks, maka array baris teks akan diserahkan kepada aryLines array yang baru.

Jika ada yang salah, namun, kesalahan dilemparkan ke atas baris teks, dan berakhir di tangkapan bagian dari try … catch block:
catch (IOException e){
            System.out.println( e.getMessage());
            }
Setelah kata "catch" kita memiliki sepasang kurung bulat. Di dalam kurung bulat, kita memiliki ini:
IOException e
Apa yang dilakukannya adalah untuk membuat sebuah variabel yang disebut "e" yang merupakan tipe IOException. Object IOException memiliki metode sendiri yang dapat kita gunakan. Salah satu metode ini adalah getMessage. yang akan memberikan ke pengguna beberapa informasi tentang apa yang salah.

Sebelum kita melihat contoh pesan kesalahan, mari kita loop melalui semua baris dari file teks, dan mencetak masing-masing isi file teks tersebut. Tambahkan kode loop berikut ke bagian try dari try … catch block:
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( e.getMessage());
            }
    }
}  
Ketika program dijalankan, jendela Output akan mencetak berikut:
Seperti yang kita lihat, setiap baris dari file teks telah dicetak.
Untuk menguji pengecekan error bagian dari kode, ubah nama file teks ke salah satu file yang belum ada dibuat. Kemudian jalankan kode lagi. Pada jendela Output bawah, Kita dapat melihat bahwa file teks kita berubah ke teksB, dan bahwa hal file itu tidak dapat ditemukan:
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\\teksB.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( e.getMessage());
            }
    }
}
Maka Outputnya :
Kita juga dapat menambahkan pesan kesalahan kita sendiri untuk catch blok:
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\\teksB.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");
            }
    }
}
Maka Outputnya :

Pada bagian berikutnya, kita akan belajar bagaimana menulis ke file teks menggunakan kode Java. -  Write to a Text File -

0 komentar:

Posting Komentar