menu

VanThuong.Com

Blog học lập trình Java và SEO miễn phí.

Tổng hợp các cách đọc file dữ liệu trong Java

Posted by on
Khi bắt đầu làm quen với lập trình Java, nhất là các bài học về hướng đối tượng. Hầu hết giáo viên hoặc người trực tiếp hướng dẫn của các bạn sẽ yêu cầu các bạn đọc file dữ liệu ở dạng text để thực hành nếu như chưa học cách kết nối Database bằng JDBC. Hoặc trong một số trường hợp chúng ta được giao cho công việc là viết 1 cái Utility để parse dữ liệu từ một file text về các đối tượng cụ thể và lưu xuống CSDL thì việc đọc file là không tránh khỏi. Trong bài viết này, tôi sẽ tổng hợp một số cách đọc file text thường dùng để các bạn cùng tham khảo nhé.
Tổng hợp các cách đọc file dữ liệu trong Java

Đọc file bằng BufferReader

Một trong những cách phổ biến nhất là sử dụng BufferReader của Java. Hãy cùng xem ví dụ bên dưới đây, tôi sẽ đọc file và in ra màn hình các dòng có trong nội dung file.
public void readFile(String fileName) {
    BufferedReader reader = null;
    try {
        String line;
        reader = new BufferedReader (new FileReader(fileName));
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
    } catch (IOException e) {
        System.err.println(e.getMessage());
    } finally {
        try {
            //Đừng quên gọi hàm close của BufferReader
            if (reader != null)
                reader.close();
        } catch (IOException ex) {
            System.err.println(e.getMessage());
        }
    }
}

Đọc file với try-with-resources

Từ ví dụ phía trên, chúng ta phải mất viết thêm đoạn code để close stream. Thay vào đó, chúng ta sẽ tận dụng tính năng try-with-resources của Java 7 để rút gọn hơn. Mời các bạn xem đoạn code bên dưới đây.
public void readFileWithTryWithResources(String fileName) {
    try (BufferedReader br = new BufferedReader(new FileReader("C:\\testing.txt"))) {
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }   
}

Đọc file bằng java.nio.file.Files

Được giới thiệu trong Java 7, nó mang lại cho chúng ta khá nhiều thứ hữu ích để sử dụng. Bạn có thể tham khao thêm các tài liệu hướng dẫn của java.nio.file package trên trang chủ của Oracle.
public void readFileWithNIO (String fileName) {
    Path path = Paths.get(fileName);
     
    try ( Stream<String> lines = Files.lines(path) )     {
        lines.forEach(s -> System.out.println(s));
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}
Bạn nên sử dụng phương thức lines.forEachOrdered(). Nếu như chúng ta sử dụng lines.forEach() như trong ví dụ trên thì chúng ta sẽ không nhận được thứ tự chính xác của các dòng do tính chất bất đồng bộ của API.

Đọc file với Apache Commons IOUtils

Thư viện Apache commons IO cung cấp cho chúng ta các method ngắn và dễ sử dụng để làm việc hiệu quả với hầu hết các công việc liên quan tới IO trong Java. Dưới đây là một ví dụ về cách sử dụng FileUtils để đọc file mà bạn có thể tham khảo.
public void readFileWithApacheCommons (String fileName) {
    try {
        File file = new File(fileName);
        List lines = FileUtils.readLines(file, "UTF-8");
        lines.forEach(System.out::println);
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

Đọc file với Guava

Bộ thư viện Guava cũng khá giống với Apache commons. Bạn có thể sử dụng nó để đọc file như ví dụ bên dưới đây.
public void readFileWithGuava (String fileName) {
    try {
        File file = new File(fileName);
        List lines = Files.readLines(file, "UTF-8");
        lines.forEach(System.out::prinln);
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

Lời kết

Để đọc nội dung chúng ta có N cách để làm được điều đó. Quan trọng nhất là cần biết chúng ta nên sử dụng bộ thư viện nào, có phù hợp với mục đích của mình hay không. Hi vọng rằng với một số ví dụ trên sẽ giúp các bạn nắm được các cách đọc file trong Java. Chúc các bạn học tốt nhé.
Đăng bình luận

menu