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

Đọ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, giờ đây thì tất cả chúng ta khởi đầ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 thiết yếu

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 tài 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.SEVERE, null, ex);

}
}
}

}
 

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

BufferedReader trong Java

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.Cách sử dụngđể đọc file hoàn toàn có thể xem là chiêu thức dễ sử dụng nhất. BufferedReader phân phối sẵn hàmđể đọc tài 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 hoàn toàn 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 tài 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.SEVERE, null, ex);

        } catch (IOException ex) {

            Logger.getLogger(ReadFileWithBufferedReader.class.getName())

                            .log(Level.SEVERE, null, ex);

        } finally {

            try {

                bufferedReader.close();

                fileInputStream.close();

            } catch (IOException ex) {

                Logger.getLogger(ReadFileWithBufferedReader.class.getName()

                                .log(Level.SEVERE, null, 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 tài 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.SEVERE, 

null

, ex);

        } catch (IOException ex) {

            Logger.getLogger(ReadFileWithBufferedReader.class.getName())

                            .log(Level.SEVERE, null, ex);

        } finally {

            try {

                reader.close();

                / / file.close ( ) ;

            } catch (IOException ex) {

                Logger.getLogger(ReadFileWithBufferedReader.class.getName())

                                .log(Level.SEVERE, null, 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:

xmlversion=” 1.0 “? >

    

        Michael

firstname>

        Corleone

lastname>

        22

age>

        $1.000.000

earnings>

    

thành viên>

    

        Tom

firstname>

        Hagen

lastname>

        26

age>

        $300.000

earnings>

    

thành viên>

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(” thành viên “);

            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();

}
}

}
 

cấu trúc dữ liệu

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

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

> Đọc thêm: Phương thức printf trong JavaLàm việc với XML khá là phức tạp, bạn cần có kiến thức và kỹ năng chuẩn về những phương pháp được tương hỗ sẵn và một chút ít hiểu biết sâu hơn về những loạinữa. Nhưng không sao cả, học nhiều, đọc nhiều, rèn luyện nhiều rồi sẽ quen mà thôi. Tóm lại, cáchthì khá phong phú. Tuy nhiên, Java tương hỗ tận răng mọi nhu yế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 giải quyết và xử lý khác nhau để mang lại hiệu suất cao tốt nhất. Mỗi giải pháp cũng có những ưu điểm yếu kém riêng, nên trong quy trình rèn luyện bạn nhớ quan tâm, NOTE lại để có những chỉnh sửa hài hòa và hợp lý cho những lần sau. Ví dụ mình đưa ra ở trên chỉ mang đặc thù tìm hiểu thêm, những bạn đọc hiểu và tự làm lại theo cách hiểu riêng để nâng cao tính phát minh sáng tạo vàtốt hơn nhé .

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 tiễn + Tuyển dụng ngay !

Đc : Tầng 3, 25T2, N05, Nguyễn Thị Thập, CG cầu giấy, TP. Hà Nội

SĐT : 02435574074 – 0383.180086

E-Mail : [email protected]

Fanpage: https://facebook.com/NIIT.ICT/

# niit # icthanoi # niithanoi # niiticthanoi # hoclaptrinh # khoahoclaptrinh # hoclaptrinhjava # hoclaptrinhphp # java # php # python