Đọ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
(
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);
}
}
}
}
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
();
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