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

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


Ngày xưa, có thể bạn đã thân thuộc với việc đọc dữ liệu từ console.

Không những thế đố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ẽ giải quyết ra sao?

Rất may cho bạn, Java là một từ ngữ mạnh khỏe, phân phối cho bạn rất là nhiều tùy chọn cho từng trường hợp rõ ràng và cụ thể bạn cần.

 

1. Chỉ dẫn 1 số cách đọc file trong Java

 

Đọc file trong Java


Các công thức phụ trợ đọc file không những trong Java mà đa phần các từ ngữ lập trình khác đều có.

Không những thế, mỗi từ ngữ lại có mẹo giải quyết khác nhau.

Mong muốn biết chúng khác nhau như vậy nào thì trước tiên bạn phải biết Java đọc file như vậy nào cái đã.

Đọc file trong Java có thể nói là khá phong phú ở công thức phụ trợ.

Để tìm tòi kỹ hơn, trước nhất tất cả chúng ta hãy tạo một file text.txt có bài viết như bên dưới (bước này mình lưu ở thư mục ₣:content-niit) để phụ trợ cho phần code chẳng hạn.
 

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 Ι 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 Ι had thee as α dream doth flatter, 

In sleep α king, but waking no such matter.

Ok, hiện giờ 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 so với việc nhập xuất trên màn hình console trước đây rồi nhỉ.

Khi làm việc với File, Scanner phân phối hai công thức là hasNextLine() & nextLine() phụ trợ đọc file khá dễ dàng & thân thiện, dễ sử dụng.

Đây là chẳng hạn 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

 = 

(*3*)

;

        

// Đọc dữ liệu từ File với Scanner

        

FileInputStream

 

fileInputStream

 = 

new

 

FileInputStream

(url);

        

Scanner

 

scanner

 = 

new

 

Scanner

(fileInputStream);

        

try

 {

            

while

Xem Thêm  Kinh nghiệm chọn mua, dùng máy hút ẩm hiệu quả, tiết kiệm điện - hút ẩm phòng

 (

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 phân phối sẵn hàm readLine() để đọc dữ liệu của file theo dòng.

Cách thức này cần dùng thêm một InputStream thì mới có thể mở & đọc file được.

Cách sử dụngđể đọc file có thể xem là phương thức dễ sử dụng nhất.BufferedReader phân phối sẵn hàmđể đọc dữ liệu của file theo dòng.Cách thức này cần dùng thêm một InputStream thì mới có thể mở & đọ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

 = 

(*3*)

;

        

// Đọ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

.

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 & FileReader để đọc file

Cách thức này cũng giống như BufferedReader nhưng có phần nào dễ dàng hơn một 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

 = 

(*3*)

;

        

// Đọc dữ liệu từ File với File & 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);

            }

Xem Thêm  Tải và thực thi tệp bên ngoài trong node.js - nút js thực thi tệp js

        }

    }

}
 

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

Còn 1 vài cách khác khó hơn, cầu kỳ hơn & cũng không nhiều đượ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 tòi để phong phú hoá code của mình.

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

File theo khái niệm trong lập trình có rất là 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 nội dung 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à dễ dàng hóa việc chia sẻ dữ liệu giữa các platform & các hệ thống được connect với mạng Mạng internet.

Chính vì như thế, XML có công dụng rất lớn trong việc chia sẻ, thỏa thuận dữ liệu giữa các hệ thống.

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

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

Như phần chẳng hạn trước, mình tạo một File family.xml (tại thư mục ở ₣:content-niit) với bài viết mẫu như sau:

<?

xml

 version

=

“1.0”

?>

<

family

>

    

<

thành viên

 

id

=

“4”

>

        

<

firstname

>

Michael

</

firstname

>

        

<

lastname

>

Corleone

</

lastname

>

        

<

age

>

22

</

age

>

        

<

earnings

>

$1.000.000

</

earnings

>

    

</

thành viên

>

    

<

thành viên

 

id

=

“3”

>

        

<

firstname

>

Tom

</

firstname

>

        

<

lastname

>

Hagen

</

lastname

>

        

<

age

>

26

</

age

>

        

<

earnings

>

$300.000

</

earnings

>

    

</

thành viên

>

</

family

>

 

 
Để đọc được File XML ở trên, mình sẽ dùng DOM XML – nghiên cứu toàn thể file XML & lưu nó vào bộ nhớ lưu trữ, sau đó mô hình hoá nó dưới dạng kết cấu TREE.

Việc này Java auto làm, việc của các 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

Xem Thêm  TẠO BẢNG NHƯ CHỌN (Azure Synapse Analytics) - Máy chủ SQL - tạo bảng dưới dạng lựa chọn từ máy chủ sql

();

            

NodeList

 

nList

 = 

doc

.

getElementsByTagName

(

“member”

);

            

for

 (

int

 

temp

 = 

; 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

(

).

getTextContent

());

                    

System

.

out

.

println

(

“Họ: “

                                        + 

eElement

.

getElementsByTagName

(

“lastname”

)

                                        .

item

(

).

getTextContent

());

                    

System

.

out

.

println

(

“Tuổi: “

                                        + 

eElement

.

getElementsByTagName

(

“age”

)

                                        .

item

(

).

getTextContent

());

                    

System

.

out

.

println

(

“Thu nhập: “

                                        + 

eElement

.

getElementsByTagName

(

“earnings”

)

                                        .

item

(

).

getTextContent

());

                    

System

.

out

.

println

(

” “

);

                }

            }

        } 

catch

 (

Exception

 

e

) {

            

e

.

printStackTrace

();

        }

    }

}
 

kết cấu dữ liệu

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

> Xem qua ngay KHÓA HỌC JAVA

Tóm lại, cách đọc file trong Java thì khá phong phú. Không những thế, Java phụ trợ tận răng mọi nhu cầu thao tác với file của các bạn.

& tuỳ từng loại File khác nhau mà ta sẽ lựa chọn cách giải quyết khác nhau để đem lại hiệu quả tốt nhất.

Mỗi phương thức cũng có những ưu khuyết điểm riêng, nên trong công cuộc luyện tập bạn nhớ cảnh báo, NOTE lại để có những canh chỉnh hợp lý cho những lần sau.

Chẳng hạn mình đặt ra ở trên chỉ có tính chất đọc qua, các bạn đọc hiểu & tự làm lại theo cách hiểu riêng để chuyên sâu tính ý tưởng & tự học Java

> Tham khảo thêm: Bí quyết printf trong Java

Làm việc với XML khá là cầu kỳ, bạn cần phải có học thức chuẩn về các công thức được phụ trợ sẵn & một tí hiểu biết sâu hơn về các loạinữa.Nhưng chẳng sao cả, học nhiều, đọc nhiều, luyện tập nhiều rồi sẽ quen mà thôi.Tóm lại, cáchthì khá phong phú. Không những thế, Java phụ trợ tận răng mọi nhu cầu thao tác với file của các bạn.& tuỳ từng loại File khác nhau mà ta sẽ lựa chọn cách giải quyết khác nhau để đem lại hiệu quả tốt nhất.Mỗi phương thức cũng có những ưu khuyết điểm riêng, nên trong công cuộc luyện tập bạn nhớ cảnh báo, NOTE lại để có những canh chỉnh hợp lý cho những lần sau.Chẳng hạn mình đặt ra ở trên chỉ có tính chất đọc qua, các bạn đọc hiểu & tự làm lại theo cách hiểu riêng để chuyên sâu tính ý tưởng vàtốt hơn nhé.

HỌC VIỆN ĐÀO TẠO công nghệ thông tin NIIT – ICT HÀ NỘI

Học Lập trình chất lượng tốt (Since 2002). Học thực tiễn + Tuyển nhân sự ngay!

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

SĐT: 02435574074 – 0383.180086

Thư điện tử: hello@niithanoi.edu.vn

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

 

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

Viết một bình luận