Input dari file
Kebanyakan program seperti Notepad, Photoshop, dan Word membenarkan user untuk save kerja mereka di dalam komputer. Kemudian user boleh sambung semula dengan menggunakan file yang di-save tersebut. Java juga ada menyediakan class untuk mengambil input daripada file. Jadi, kita akan lihat cara penggunaan class tersebut.
Sebelum itu, kita perlu membuat file terlebih dahulu dengan menggunakan
mana-mana text editor. Kita tulis apa-apa sahaja yang kita mahu di
dalam file tersebut. Selepas itu, kita save file tersebut
sebagai cubaan.txt
atau apa-apa sahaja yang anda mahu. Kemudian kita
letakkan file tersebut di dalam folder project Netbeans.
FileReader
Kita boleh menggunakan class FileReader
untuk mengambil input daripada
file. Untuk menggunakan class FileReader
, kita perlu handle
exception untuk mengelakkan error, contohnya jika file tersebut
tidak wujud. Method read()
boleh digunakan untuk mendapatkan
character daripada file. Selepas digunakan, class FileReader
perlu
ditutup semula menggunakan method close()
.
package essential;
import java.io.FileReader;
import java.io.IOException;
public class InputDariFile {
public static void main(String[] args) throws IOException {
FileReader reader = null;
try {
reader = new FileReader("cubaan.txt");
int input = reader.read();
System.out.println(input);
} finally {
reader.close();
}
}
}
Selepas run, kita akan dapat satu nombor. Nombor ini ialah nombor ASCII kerana komputer menyimpan data dalam bentuk nombor.
Klik untuk lihat senarai nombor ASCII
Untuk menukar nombor tersebut kepada character, kita boleh menggunakan
method Character.toChars()
:
package essential;
import java.io.FileReader;
import java.io.IOException;
public class InputDariFile {
public static void main(String[] args) throws IOException {
FileReader reader = null;
try {
reader = new FileReader("cubaan.txt");
int input = reader.read();
System.out.println(Character.toChars(input));
} finally {
reader.close();
}
}
}
dan kita akan mendapat character pertama yang kita tulis dalam file.
Untuk mendapatkan semua character, kita boleh menggunakan loop:
package essential;
import java.io.FileReader;
import java.io.IOException;
public class InputDariFile {
public static void main(String[] args) throws IOException {
FileReader reader = null;
try {
reader = new FileReader("cubaan.txt");
int input;
while ((input = reader.read()) != -1) {
System.out.print(Character.toChars(input));
}
} finally {
reader.close();
}
}
}
Loop tersebut akan berhenti apabila nombor yang dipulangkan bersamaan -1 yang bermaksud tiada character lagi yang wujud.
BufferedReader
Sebelum ini kita lihat class FileReader mengambil satu character
pada satu masa. Cara ini sebenarnya tidak efisyen. Jadi, Java
menyediakan class BufferedReader
untuk membuatkan proses mengambil
input lebih efisyen.
package essential;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class InputDariFile {
public static void main(String[] args) throws IOException {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("cubaan.txt"));
String input = reader.readLine();
System.out.println(input);
} finally {
reader.close();
}
}
}
Class FileReader masih digunakan cuma kali ini dibantu oleh class
BufferedReader. Method readLine()
akan terus mengambil sepanjang
baris dalam file tersebut sebagai string.
Kita boleh menggunakan loop jika file tersebut mempunyai lebih daripada satu baris:
package essential;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class InputDariFile {
public static void main(String[] args) throws IOException {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("cubaan.txt"));
String input;
while ((input = reader.readLine()) != null) {
System.out.println(input);
}
} finally {
reader.close();
}
}
}