Đọc File Trong Java - Quyetdo289's Blog
Có thể bạn quan tâm
Trong Java, có nhiều cách để đọc 1 file, bạn có thể lựa chọn cách phù hợp tùy theo mục đích.
1 . Sử dụng java.nio.file.Files : Nếu bạn muốn đọc tất cả nội dung của một file thành một mảng byte hoặc đọc tất cả các dòng thành một list thì có thể sử dụng lớp Files. Lớp Files được gới thiệu trong Java 7 và nó là cách tốt nếu bạn muốn load tất cả nội dung của file. Bạn chỉ nên sử dụng phương thức này khi làm việc với file nhỏ và cần load tất cả nội dung vào memory.
2. Sử dụng java.io.FileReader : Bạn có thể sử dụng FileReader để nhận về BufferedReader và sau đó đọc file theo từng dòng một. FileReader không hỗ trợ mã hóa và làm việc với bảng mã mặc định của hệ thống, do đó nó không phải là một cách hữu hiệu để đọc file trong Java
3. Sử dụng java.io.BufferedReader : BufferedReader là cách tốt nếu bạn muốn đọc file theo từng dòng và xử lý trên chúng. Nó phù hợp cho việc xử lý file lớn và nó cũng hỗ trợ encoding. BufferedReader là đồng bộ ( synchronized ), do đó thao tác đọc trên một BufferedReader có thể thực hiện an toàn từ nhiều thread . BufferedReader mặc định có bộ đệm ( buffer ) kích thước 8KB.
4. Sử dụng java.util.Scanner : Nếu bạn muốn đọc file theo từng dòng và dựa vào java regular expression, Scanner là một lớp phù hợp cho việc đó. Scanner tách đầu vào của nó thành các dấu hiệu (tokens) sử dụng một mẫu tách ( delimiter pattern ), cái mà mặc định so khớp với khoảng trắng. Các tokens kết quả sau đó có thể được chuyển đổi thành giá trị của các loại khác nhau sử dụng các phương thức khác nhau tiếp theo. Scanner là không đồng bộ và vì thế không an toàn khi sử dụng multi thread.
Ví dụ sau là minh họa cách sử dụng Files, BuferedReader, Scanner ( có hỗ trợ encoding ) và FileReader ( không hỗ trợ encoding ).
package quyetdv.java.javaio.file; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; import java.util.Scanner; public class ReadFileExample { static final String fileName = "test1.txt"; public static void main(String[] args) throws IOException { // using Java 7 Files class to process small files, get complete file data readUsingFiles(fileName); // using FileReader, no encoding support, not efficient readUsingFileReader(fileName); // using BufferedReader, to read line by line readUsingBufferedReader(fileName); readUsingBufferedReader(fileName, StandardCharsets.UTF_8); readUsingBufferedReaderJava7(fileName, StandardCharsets.UTF_8); // using Scanner class for larget files, to read line by line readUsingScanner(fileName); } private static void readUsingFiles(String fileName) throws IOException { Path path = Paths.get(fileName); // read file to byte array byte[] bytes = Files.readAllBytes(path); // read file to String list List<String> allLines = Files .readAllLines(path, StandardCharsets.UTF_8); for (String line : allLines) { System.out.println(line); } } private static void readUsingFileReader(String fileName) throws IOException { File file = new File(fileName); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String line; while ((line = br.readLine()) != null) { // process the line System.out.println(line); } br.close(); fr.close(); } private static void readUsingBufferedReader(String fileName, Charset cs) throws IOException { File file = new File(fileName); FileInputStream fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis, cs); BufferedReader br = new BufferedReader(isr); String line; while ((line = br.readLine()) != null) { // process the line System.out.println(line); } br.close(); } private static void readUsingBufferedReaderJava7(String fileName, Charset cs) throws IOException { Path path = Paths.get(fileName); BufferedReader br = Files.newBufferedReader(path, cs); String line; while ((line = br.readLine()) != null) { // process the line System.out.println(line); } br.close(); } private static void readUsingBufferedReader(String fileName) throws IOException { File file = new File(fileName); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String line; while ((line = br.readLine()) != null) { // process the line System.out.println(line); } br.close(); fr.close(); } private static void readUsingScanner(String fileName) throws IOException { Path path = Paths.get(fileName); Scanner scanner = new Scanner(path); // read line by line while (scanner.hasNextLine()) { // process each line String line = scanner.nextLine(); } } }Share this:
- X
Related
Từ khóa » đọc File Trong Java Dụng Scanner
-
Cách đọc File Trong Java Sử Dụng Scanner - Ngoc Khuong Blog
-
3 Cách đọc File Trong Java Phổ Biến Nhất - NIIT - ICT Hà Nội
-
Đọc Ghi File Trong Java - Học Java Miễn Phí Hay Nhất - VietTuts
-
Sử Dụng BuffferedReader Và Scanner để đọc Dữ Liệu Từ File
-
đọc File Trong Java Dụng Scanner | Tuỳ-chọ
-
Làm Việc Với File Trong Java
-
Đọc File Trong Java - Lập Trình Từ Đầu
-
Đọc Nội Dung Một File Trong Java
-
Các Phương Pháp đọc/ghi Tệp Dữ Liệu Khác Nhau Trong Java - FUNiX
-
Tự Học Java | Lớp Scanner Trong Java »
-
Cách đọc Ghi File Trong Java - Lập Trình Không Khó
-
Lớp Scanner Trong Java - TEK4
-
Java: Nhập Liệu Với Scanner Và .read() | V1Study
-
Phương Thức Và Hàm Tạo Lớp Scanner Trong Java