Difference between revisions of "JAVA: Read Text File"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | Ada beberapa cara untuk menulis dan membaca file teks. ini diperlukan saat menangani banyak aplikasi. Ada beberapa cara untuk membaca file teks biasa di Java misalnya kita dapat menggunakan FileReader, BufferedReader, atau Scanner untuk membaca file teks. Setiap utilitas menyediakan sesuatu yang istimewa misalnya BufferedReader menyediakan buffering data untuk pembacaan cepat, dan Scanner menyediakan kemampuan parsing. | |
− | + | Method: | |
− | + | * Menggunakan Class BufferedReader | |
− | + | * Menggunakan Class Scanner | |
− | + | * Menggunakan Class File Reader | |
− | + | * Membaca seluruh file dalam sebuah List | |
− | + | * Membaca file text sebagai String | |
− | |||
− | + | Kita juga dapat menggunakan BufferReader dan Scanner untuk membaca file teks baris demi baris di Java. Java SE 8 memperkenalkan kelas Stream lain java.util.stream.Stream yang menyediakan cara malas dan lebih efisien untuk membaca file. | |
− | + | Catatan Tip: Praktik menulis kode yang baik seperti flushing/closing stream, penanganan exception, dll, telah dihindari untuk pemahaman code yang lebih baik oleh pemula. | |
− | + | Mari kita bahas masing-masing metode di atas secara lebih mendalam dan yang paling penting dengan mengimplementasikannya melalui program java yang bersih. | |
− | |||
− | BufferedReader in = new BufferedReader(Reader in, int size); | + | ==Method 1: Menggunakan Class BufferedReader== |
− | + | ||
+ | Method ini membaca teks dari input karakter stream. Ini akan mem-buffer untuk membaca karakter, array, dan garis secara efisien. Ukuran buffer dapat ditentukan, atau ukuran default dapat digunakan. Standarnya cukup besar untuk sebagian besar tujuan. Secara umum, setiap permintaan baca yang dibuat dari Pembaca menyebabkan permintaan baca yang sesuai dibuat dari karakter atau byte stream yang mendasarinya. Oleh karena itu disarankan untuk membungkus BufferedReader di sekitar Pembaca yang operasi read() mungkin mahal, seperti FileReaders dan InputStreamReaders seperti yang ditunjukkan di bawah ini sebagai berikut: | ||
+ | |||
+ | BufferedReader in = new BufferedReader(Reader in, int size); | ||
+ | |||
+ | Contoh: | ||
// Java Program to illustrate Reading from FileReader | // Java Program to illustrate Reading from FileReader | ||
Line 59: | Line 62: | ||
Output: | Output: | ||
− | If you want to code refer to GeeksforGeeks | + | If you want to code refer to GeeksforGeeks |
==Method 2: Using FileReader class== | ==Method 2: Using FileReader class== | ||
− | + | Class yang nyaman untuk membaca file karakter. Konstruktor Class ini menganggap bahwa pengkodean karakter default dan ukuran buffer byte default sudah sesuai. | |
− | + | Konstruktor yang didefinisikan dalam Class ini adalah sebagai berikut: | |
− | FileReader(File file): | + | FileReader(File file): Create new FileReader, dengan memberikan File untuk di read |
− | FileReader(FileDescriptor fd): | + | FileReader(FileDescriptor fd): Create new FileReader, dengan memberikan FileDescriptor untuk di read |
− | FileReader(String fileName): | + | FileReader(String fileName): Create new FileReader, dengan memberikan nama file untuk di read |
− | + | Contoh: | |
// Java Program to Illustrate reading from | // Java Program to Illustrate reading from | ||
Line 103: | Line 106: | ||
Output: | Output: | ||
− | If you want to code refer to GeeksforGeeks | + | If you want to code refer to GeeksforGeeks |
− | ==Method 3: | + | ==Method 3: Menggunakan Class Scanner== |
− | + | Scanner teks sederhana yang dapat mengurai tipe dan string primitif menggunakan regular expression. Scanner memecah inputnya menjadi token menggunakan pola pembatas, yang secara default cocok dengan whitespace. Token yang dihasilkan kemudian dapat diubah menjadi nilai dari jenis yang berbeda menggunakan berbagai method berikutnya. | |
− | ===Example 1: | + | ===Example 1: Dengan menggunakan loop=== |
// Java Program to illustrate | // Java Program to illustrate | ||
Line 131: | Line 134: | ||
Output: | Output: | ||
− | If you want to code refer to GeeksforGeeks | + | If you want to code refer to GeeksforGeeks |
− | ===Example 2: | + | ===Example 2: Tanpa menggunakan loop=== |
// Java Program to illustrate reading from FileReader | // Java Program to illustrate reading from FileReader | ||
Line 159: | Line 162: | ||
Output: | Output: | ||
− | If you want to code refer to GeeksforGeeks | + | If you want to code refer to GeeksforGeeks |
+ | |||
+ | ==Method 4: Membaca keseluruhan file di List== | ||
+ | |||
+ | Baca semua baris dari file. Method ini memastikan bahwa file ditutup ketika semua byte telah dibaca atau kesalahan I/O, atau exception runtime lainnya, dilemparkan. Byte dari file didekodekan menjadi karakter menggunakan charset yang ditentukan. | ||
− | + | Sintaks: | |
− | + | public static List readAllLines(Path path,Charset cs)throws IOException | |
− | + | Method ini mengenali yang berikut sebagai terminator garis: | |
− | + | \u000D followed by \u000A, CARRIAGE RETURN followed by LINE FEED | |
− | + | \u000A, LINE FEED | |
+ | \u000D, CARRIAGE RETURN | ||
− | + | Contoh | |
− | |||
− | |||
− | |||
// Java program to illustrate reading data from file | // Java program to illustrate reading data from file | ||
Line 213: | Line 218: | ||
Output: | Output: | ||
− | If you want to code refer to GeeksforGeeks | + | If you want to code refer to GeeksforGeeks |
− | ==Method 5: | + | ==Method 5: Membaca sebuah text file sebagai String== |
− | + | Contoh | |
// Java Program to illustrate | // Java Program to illustrate | ||
Line 244: | Line 249: | ||
Output: | Output: | ||
− | If you want to code refer to GeeksforGeeks | + | If you want to code refer to GeeksforGeeks |
Latest revision as of 07:41, 9 May 2022
Ada beberapa cara untuk menulis dan membaca file teks. ini diperlukan saat menangani banyak aplikasi. Ada beberapa cara untuk membaca file teks biasa di Java misalnya kita dapat menggunakan FileReader, BufferedReader, atau Scanner untuk membaca file teks. Setiap utilitas menyediakan sesuatu yang istimewa misalnya BufferedReader menyediakan buffering data untuk pembacaan cepat, dan Scanner menyediakan kemampuan parsing.
Method:
- Menggunakan Class BufferedReader
- Menggunakan Class Scanner
- Menggunakan Class File Reader
- Membaca seluruh file dalam sebuah List
- Membaca file text sebagai String
Kita juga dapat menggunakan BufferReader dan Scanner untuk membaca file teks baris demi baris di Java. Java SE 8 memperkenalkan kelas Stream lain java.util.stream.Stream yang menyediakan cara malas dan lebih efisien untuk membaca file.
Catatan Tip: Praktik menulis kode yang baik seperti flushing/closing stream, penanganan exception, dll, telah dihindari untuk pemahaman code yang lebih baik oleh pemula.
Mari kita bahas masing-masing metode di atas secara lebih mendalam dan yang paling penting dengan mengimplementasikannya melalui program java yang bersih.
Method 1: Menggunakan Class BufferedReader
Method ini membaca teks dari input karakter stream. Ini akan mem-buffer untuk membaca karakter, array, dan garis secara efisien. Ukuran buffer dapat ditentukan, atau ukuran default dapat digunakan. Standarnya cukup besar untuk sebagian besar tujuan. Secara umum, setiap permintaan baca yang dibuat dari Pembaca menyebabkan permintaan baca yang sesuai dibuat dari karakter atau byte stream yang mendasarinya. Oleh karena itu disarankan untuk membungkus BufferedReader di sekitar Pembaca yang operasi read() mungkin mahal, seperti FileReaders dan InputStreamReaders seperti yang ditunjukkan di bawah ini sebagai berikut:
BufferedReader in = new BufferedReader(Reader in, int size);
Contoh:
// Java Program to illustrate Reading from FileReader // using BufferedReader Class // Importing input output classes import java.io.*; // Main class public class GFG { // main driver method public static void main(String[] args) throws Exception { // File path is passed as parameter File file = new File( "C:\\Users\\pankaj\\Desktop\\test.txt"); // Note: Double backquote is to avoid compiler // interpret words // like \test as \t (ie. as a escape sequence) // Creating an object of BufferedReader class BufferedReader br = new BufferedReader(new FileReader(file)); // Declaring a string variable String st; // Condition holds true till // there is character in a string while ((st = br.readLine()) != null) // Print the string System.out.println(st); } }
Output:
If you want to code refer to GeeksforGeeks
Method 2: Using FileReader class
Class yang nyaman untuk membaca file karakter. Konstruktor Class ini menganggap bahwa pengkodean karakter default dan ukuran buffer byte default sudah sesuai.
Konstruktor yang didefinisikan dalam Class ini adalah sebagai berikut:
FileReader(File file): Create new FileReader, dengan memberikan File untuk di read FileReader(FileDescriptor fd): Create new FileReader, dengan memberikan FileDescriptor untuk di read FileReader(String fileName): Create new FileReader, dengan memberikan nama file untuk di read
Contoh:
// Java Program to Illustrate reading from // FileReader using FileReader class // Importing input output classes import java.io.*; // Main class // ReadingFromFile public class GFG { // Main driver method public static void main(String[] args) throws Exception { // Passing the path to the file as a parameter FileReader fr = new FileReader( "C:\\Users\\pankaj\\Desktop\\test.txt"); // Declaring loop variable int i; // Holds true till there is nothing to read while ((i = fr.read()) != -1) // Print all the content of a file System.out.print((char)i); } }
Output:
If you want to code refer to GeeksforGeeks
Method 3: Menggunakan Class Scanner
Scanner teks sederhana yang dapat mengurai tipe dan string primitif menggunakan regular expression. Scanner memecah inputnya menjadi token menggunakan pola pembatas, yang secara default cocok dengan whitespace. Token yang dihasilkan kemudian dapat diubah menjadi nilai dari jenis yang berbeda menggunakan berbagai method berikutnya.
Example 1: Dengan menggunakan loop
// Java Program to illustrate // reading from Text File // using Scanner Class import java.io.File; import java.util.Scanner; public class ReadFromFileUsingScanner { public static void main(String[] args) throws Exception { // pass the path to the file as a parameter File file = new File("C:\\Users\\pankaj\\Desktop\\test.txt"); Scanner sc = new Scanner(file); while (sc.hasNextLine()) System.out.println(sc.nextLine()); } }
Output:
If you want to code refer to GeeksforGeeks
Example 2: Tanpa menggunakan loop
// Java Program to illustrate reading from FileReader // using Scanner Class reading entire File // without using loop import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class ReadingEntireFileWithoutLoop { public static void main(String[] args) throws FileNotFoundException { File file = new File("C:\\Users\\pankaj\\Desktop\\test.txt"); Scanner sc = new Scanner(file); // we just need to use \\Z as delimiter sc.useDelimiter("\\Z"); System.out.println(sc.next()); } }
Output:
If you want to code refer to GeeksforGeeks
Method 4: Membaca keseluruhan file di List
Baca semua baris dari file. Method ini memastikan bahwa file ditutup ketika semua byte telah dibaca atau kesalahan I/O, atau exception runtime lainnya, dilemparkan. Byte dari file didekodekan menjadi karakter menggunakan charset yang ditentukan.
Sintaks:
public static List readAllLines(Path path,Charset cs)throws IOException
Method ini mengenali yang berikut sebagai terminator garis:
\u000D followed by \u000A, CARRIAGE RETURN followed by LINE FEED \u000A, LINE FEED \u000D, CARRIAGE RETURN
Contoh
// Java program to illustrate reading data from file // using nio.File import java.util.*; import java.nio.charset.StandardCharsets; import java.nio.file.*; import java.io.*; public class ReadFileIntoList { public static List<String> readFileInList(String fileName) { List<String> lines = Collections.emptyList(); try { lines = Files.readAllLines(Paths.get(fileName), StandardCharsets.UTF_8); } catch (IOException e) { // do something e.printStackTrace(); } return lines; } public static void main(String[] args) { List l = readFileInList("C:\\Users\\pankaj\\Desktop\\test.java"); Iterator<String> itr = l.iterator(); while (itr.hasNext()) System.out.println(itr.next()); } }
Output:
If you want to code refer to GeeksforGeeks
Method 5: Membaca sebuah text file sebagai String
Contoh
// Java Program to illustrate // reading from text file // as string in Java package io; import java.nio.file.*;; public class ReadTextAsString { public static String readFileAsString(String fileName)throws Exception { String data = ""; data = new String(Files.readAllBytes(Paths.get(fileName))); return data; } public static void main(String[] args) throws Exception { String data = readFileAsString("C:\\Users\\pankaj\\Desktop\\test.java"); System.out.println(data); } }
Output:
If you want to code refer to GeeksforGeeks