3 Cách đọc File trong Java Phổ biến nhất

Ngày đăng: 23/06/2020   -    Cập nhật: 14/04/2021

Đọc file trong Java là một kỹ thuật quan trọng cần phải nắm nếu muốn làm việc sâu hơn với Java. Và bài viết này mình sẽ hướng dẫn bạn một số cách đọc file phổ biến.


Trước kia, có thể bạn đã quen thuộc với việc đọc dữ liệu từ console.

Tuy nhiên đối với những file dữ liệu lớn, dài hàng nghìn – hàng triệu dòng thì bạn sẽ xử lý ra sao?

Rất may cho bạn, Java là một ngôn ngữ mạnh mẽ, cung cấp cho bạn rất nhiều tùy chọn cho từng trường hợp cụ thể bạn cần.

 

1. Hướng dẫn một số cách đọc file trong Java

 

Đọc file trong Java

Đọc file trong Java


Các phương thức hỗ trợ đọc file không chỉ trong Java mà hầu hết các ngôn ngữ lập trình khác đều có.

Tuy nhiên, mỗi ngôn ngữ lại có cách thức xử lý khác nhau.

Muốn biết chúng khác nhau như thế nào thì trước hết bạn phải biết Java đọc file như thế nào cái đã.

Đọc file trong Java có thể nói là khá đa dạng ở phương thức hỗ trợ.

Để tìm hiểu kỹ hơn, trước tiên chúng ta hãy tạo một file text.txt có nội dung như bên dưới (ở đây mình lưu ở thư mục F:\content-niit) để hỗ trợ cho phần code ví dụ.

 

Farewell! thou art too dear for my possessing, 
And like enough thou know'st thy estimate, 
The charter of thy worth gives thee releasing: 
My bonds in thee are all determinate. 
 
For how do I hold thee but by thy granting, 
And for that riches where is my deserving? 
The cause of this fair gift in me is wanting, 
And so my patent back again is swerving. 
 
Thy self thou gav'st, thy own worth then not knowing, 
Or me to whom thou gav'st it, else mistaking, 
So thy great gift upon misprision growing, 
Comes home again, on better judgement making. 
 
Thus have I had thee as a dream doth flatter, 

In sleep a king, but waking no such matter.


Ok, bây giờ thì chúng ta bắt đầu viết chương trình để đọc file trên nào.

Cách #1: Đọc file trong Java sử dụng Scanner


Cách sử dụng Scanner chắc là bạn đã quá quen đối với việc nhập xuất trên màn hình console trước đó rồi nhỉ.

Khi làm việc với File, Scanner cung cấp hai phương thức là hasNextLine()nextLine() hỗ trợ đọc file khá đơn giản và gần gũi, dễ sử dụng.

Đây là ví dụ cách mình đọc file với Scanner:




package file;

// Import package cần thiết
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ReadFileWithScanner {
    public static void main(String args[]) throws FileNotFoundException {

        String url = "F:\\content-niit\\file-content.txt";
        // Đọc dữ liệu từ File với Scanner
        FileInputStream fileInputStream = new FileInputStream(url);
        Scanner scanner = new Scanner(fileInputStream);

        try {
            while (scanner.hasNextLine()) {
                System.out.println(scanner.nextLine());
            }
        } finally {
            try {
                scanner.close();
                fileInputStream.close();
            } catch (IOException ex) {
                Logger.getLogger(ReadFileWithBufferedReader.class.getName())
                                .log(Level.SEVEREnull, ex);
            }
        }
    }
}
 

Cách #2: Đọc file trong Java sử dụng BufferedReader


Cách sử dụng BufferedReader trong Java để đọc file có thể xem là phương pháp dễ sử dụng nhất.

BufferedReader cung cấp sẵn hàm readLine() để đọc dữ liệu của file theo dòng.

Phương pháp này cần dùng thêm một InputStream thì mới có thể mở và đọc file được.



package file;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ReadFileWithBufferedReader {
    public static void main(String args[]) throws IOException {

        String url = "F:\\content-niit\\file-content.txt";

        // Đọc dữ liệu từ File với BufferedReader
        FileInputStream fileInputStream = null;
        BufferedReader bufferedReader = null;

        try {
            fileInputStream = new FileInputStream(url);
            bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
            String line = bufferedReader.readLine();
            while (line != null) {
                System.out.println(line);
                line = bufferedReader.readLine();
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(ReadFileWithBufferedReader.class.getName()
                            .log(Level.SEVEREnull, ex);
        } catch (IOException ex) {
            Logger.getLogger(ReadFileWithBufferedReader.class.getName())
                            .log(Level.SEVEREnull, ex);
        } finally {
            try {
                bufferedReader.close();
                fileInputStream.close();
            } catch (IOException ex) {
                Logger.getLogger(ReadFileWithBufferedReader.class.getName()
                                .log(Level.SEVEREnull, ex);
            }
        }
    }
}
 

Cách #3: Sử dụng File và FileReader để đọc file


Phương pháp này tương tự như BufferedReader nhưng có phần nào đơn giản hơn một chút.


package file;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ReadFileWithFileAndFileReader {
    public static void main(String args[]) throws IOException {

        String url = "F:\\content-niit\\file-content.txt";

        // Đọc dữ liệu từ File với File và FileReader
        File file = new File(url);
        BufferedReader reader = new BufferedReader(new FileReader(file));

        try {
            String line = reader.readLine();
            while (line != null) {
                System.out.println(line);
                line = reader.readLine();
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(ReadFileWithBufferedReader.class.getName())
                            .log(Level.SEVEREnull, ex);
        } catch (IOException ex) {
            Logger.getLogger(ReadFileWithBufferedReader.class.getName())
                            .log(Level.SEVEREnull, ex);
        } finally {
            try {
                reader.close();
                // file.close();
            } catch (IOException ex) {
                Logger.getLogger(ReadFileWithBufferedReader.class.getName())
                                .log(Level.SEVEREnull, ex);
            }
        }
    }
}
 

Java hỗ trợ khá nhiều phương pháp làm việc với File khác nhau, nhưng mình chỉ chia sẻ để các bạn hiểu và có thể áp dụng 3 phương pháp phổ biến như trên là quá đủ để code khoẻ rồi.

Còn một vài cách khác khó hơn, phức tạp hơn và cũng ít được sử dụng hơn nên thôi, cái gì khó quá thì ta bỏ qua. =))

Mai này có thời gian, bạn có thể tự tìm hiểu để đa dạng hoá code của mình.


2. Cách đọc file XML trong Java


File theo định nghĩa trong lập trình có rất nhiều định dạng khác nhau. Mỗi loại định dạng lại có một hoặc mốt số cách xử lí khác nhau.

Trong phạm vi một bài viết khó mà chia sẻ hết được. Nên trong phần này, mình giới thiệu thêm với các bạn một loại File phổ biến nữa là File XML.

Mục đích chính của File XML là đơn giản hóa việc chia sẻ dữ liệu giữa các platform và các hệ thống được kết nối với mạng Internet.

Chính vì vậy, XML có tác dụng rất lớn trong việc chia sẻ, trao đổi dữ liệu giữa các hệ thống.

Dĩ nhiên là, việc đọc / ghi với File XML tất yếu cũng trở nên quan trọng.

Để tìm hiểu xem cách đọc file XML trong Java như thế nào. Bạn cần chuẩn bị trước một File XML và thêm vài nội dung vào đó.

Như phần ví dụ trước, mình tạo một File family.xml (tại thư mục ở F:\content-niit) với nội dung mẫu như sau:



<?xml version="1.0"?>
<family>
    <member id="4">
        <firstname>Michael</firstname>
        <lastname>Corleone</lastname>
        <age>22</age>
        <earnings>$1.000.000</earnings>
    </member>
    <member id="3">
        <firstname>Tom</firstname>
        <lastname>Hagen</lastname>
        <age>26</age>
        <earnings>$300.000</earnings>
    </member>
</family>
 

 
Để đọc được File XML ở trên, mình sẽ dùng DOM XML - phân tích toàn bộ file XML và lưu nó vào bộ nhớ, sau đó mô hình hoá nó dưới dạng cấu trúc TREE.

Việc này Java tự động làm, việc của bạn là duyệt qua để đọc dữ liệu.



import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;

public class ReadFileXML {

    public static void main(String argv[]) {

        String url = "F:\\content-niit\\family.xml";
        try {
            File fXmlFile = new File(url);
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(fXmlFile);

            doc.getDocumentElement().normalize();
            NodeList nList = doc.getElementsByTagName("member");

            for (int temp = 0; temp < nList.getLength(); temp++) {
                Node nNode = nList.item(temp);
                if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element eElement = (Element) nNode;
                    System.out.println("Con thứ: "
                                        + eElement.getAttribute("id"));
                    System.out.println("Tên: "
                                        + eElement.getElementsByTagName("firstname")
                                        .item(0).getTextContent());
                    System.out.println("Họ: "
                                        + eElement.getElementsByTagName("lastname")
                                        .item(0).getTextContent());
                    System.out.println("Tuổi: "
                                        + eElement.getElementsByTagName("age")
                                        .item(0).getTextContent());
                    System.out.println("Thu nhập: "
                                        + eElement.getElementsByTagName("earnings")
                                        .item(0).getTextContent());
                    System.out.println(" ");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
 

Làm việc với XML khá là phức tạp, bạn cần có kiến thức chuẩn về các phương thức được hỗ trợ sẵn và một chút hiểu biết sâu hơn về các loại cấu trúc dữ liệu nữa.

Nhưng không sao cả, học nhiều, đọc nhiều, luyện tập nhiều rồi sẽ quen mà thôi.


> Tham khảo ngay KHÓA HỌC JAVA (Khóa huấn luyện 6 tháng với chuyên gia về Java) để thực sự làm chủ Java và đi làm sớm hơn.


Tóm lại, cách đọc file trong Java thì khá đa dạng. Tuy nhiên, Java hỗ trợ tận răng mọi nhu cầu thao tác với file của bạn.

Và tuỳ từng loại File khác nhau mà ta sẽ lựa chọn cách xử lý khác nhau để mang lại hiệu quả tốt nhất.

Mỗi phương pháp cũng có những ưu nhược điểm riêng, nên trong quá trình luyện tập bạn nhớ chú ý, NOTE lại để có những chỉnh sửa hợp lý cho những lần sau.

Ví dụ mình đưa ra ở trên chỉ mang tính chất tham khảo, các bạn đọc hiểu và tự làm lại theo cách hiểu riêng để nâng cao tính sáng tạo và tự học Java tốt hơn nhé.

> Đọc thêm: Phương thức printf trong Java


---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0383.180086
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #icthanoi #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python
Bình luận Facebook
Khóa học liên quan đến bài viết

Khóa học PHP Full stack [2023] cho người mới bắt đầu

96 giờ
Khóa học Lập trình PHP Full stack, phiên bản cập nhật lần thứ 8. Dạy Lập trình PHP bài bản từ Front end đến Back end + Laravel. Hướng dẫn làm 2 Dự Án Web lớn

Lập trình PHP với Laravel Framework

42 giờ
Khóa học Lập trình PHP với Laravel Framework được NIIT - ICT HÀ NỘI xây dựng nhằm hoàn thiện kỹ năng lập trình web các các bạn đã biết Lập trình Web PHP thuần.

Khóa học Java Full stack (IJFD)

104 giờ
Học lập trình Java Fullstack với khóa học được xây dựng theo lộ trình bài bản, từ JAVA CƠ BẢN đến JAVA WEB và nâng cao về JAVA FRAMEWORK như: Spring Boot, Hibernate
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!