Cổng Khoa học Máy tính dành cho những người yêu thích máy tính. Nó bao gồm các bài báo về khoa học máy tính và lập trình được viết tốt, tư duy tốt và được giải thích tốt, các câu đố và thực hành / lập trình cạnh tranh / các câu hỏi phỏng vấn công ty.
Bạn đang xem : đọc tệp văn bản java
Có nhiều cách ghi và đọc tệp văn bản. điều này là bắt buộc khi xử lý nhiều ứng dụng. Có một số cách để đọc một tệp văn bản thuần túy trong Java, ví dụ: bạn có thể sử dụng FileReader , BufferedReader hoặc Scanner để đọc tệp văn bản. Mỗi tiện ích cung cấp một cái gì đó đặc biệt, ví dụ: BufferedReader cung cấp bộ đệm dữ liệu để đọc nhanh và Máy quét cung cấp khả năng phân tích cú pháp.
Phương pháp:
- Sử dụng lớp BufferedReader
- Sử dụng lớp Trình quét
- Sử dụng lớp Trình đọc tệp
- Đọc toàn bộ tệp trong một danh sách
- Đọc tệp văn bản dưới dạng chuỗi
Chúng ta cũng có thể sử dụng cả BufferReader và Scanner để đọc từng dòng tệp văn bản trong Java. Sau đó, Java SE 8 giới thiệu một lớp Stream khác java.util.stream.Stream cung cấp cách đọc tệp hiệu quả và lười biếng hơn.
Lưu ý Mẹo: Các phương pháp viết mã tốt như xả / đóng luồng, Xử lý ngoại lệ v.v.
Phương pháp 1: Sử dụng lớp BufferedReader
Phương thức này đọc văn bản từ luồng nhập ký tự. Nó làm bộ đệm để đọc các ký tự, mảng và dòng một cách hiệu quả. Kích thước bộ đệm có thể được chỉ định hoặc kích thước mặc định có thể được sử dụng. Giá trị mặc định đủ lớn cho hầu hết các mục đích. Nói chung, mỗi yêu cầu đọc được thực hiện bởi một Trình đọc gây ra một yêu cầu đọc tương ứng được thực hiện bằng ký tự cơ bản hoặc luồng byte. Do đó, chúng tôi khuyên bạn nên bọc một BufferedReader xung quanh bất kỳ Trình đọc nào có hoạt động read () có thể tốn kém, chẳng hạn như FileReaders và InputStreamReaders như được hiển thị bên dưới như sau:
BufferedReader in = new BufferedReader (Reader in, int size) ;Ví dụ:
Java
< / p>
nhập
java.io. *;
public
class
GFG {
public
static
void < / p>
{
Tệp tin =
new
Tệp (< / code>
"C: \\ Users \\ pankaj \\ Máy tính để bàn \\ test.txt "
);
BufferedReader br
=
new
BufferedReader (
new < / code>
FileReader (file));
Chuỗi st;
trong khi
((st = br.readLine ())! =
null
)
p >
System.out.println (st);
}
}
Đầu ra:
Nếu bạn muốn viết mã, hãy tham khảo GeeksforGeeksPhương pháp 2:
> Sử dụng lớp FileReader
Lớp tiện lợi để đọc các tệp ký tự. Các hàm tạo của lớp này giả định rằng mã hóa ký tự mặc định và kích thước bộ đệm byte mặc định là phù hợp.
Các trình xây dựng được định nghĩa trong lớp này như sau:
- FileReader (File tệp): Tạo một FileReader mới, được cung cấp cho File để đọc từ đó
- FileReader (FileDescriptor fd): Tạo FileReader mới, được cấp cho FileDescriptor để đọc từ
- FileReader (String fileName): strong > Tạo FileReader mới, được đặt tên của tệp để đọc từ đó
Ví dụ:
Java h2>
p >
nhập
java. io. *;
public
class
GFG {
public
static
void
main (String [] args) code>
ném
Ngoại lệ
{
< code class = "undefined space">
FileReader fr =
< code class = "keyword"> newFileReader (
"C: \\ Users \\ pankaj \\ Desktop \\ test.txt"
);
p>
int
i;
code>
while
((i = fr.read ())! = -
1 < / code>
)
System.out.print ((
char < / code>
) i);
< p class = "code-editor-container">
Đầu ra :
Nếu bạn muốn viết mã, hãy tham khảo GeeksforGeeksPhương pháp 3: Sử dụng lớp Máy quét p >
Một trình quét văn bản đơn giản có thể phân tích cú pháp các kiểu và chuỗi nguyên thủy bằng cách sử dụng biểu thức chính quy. Máy quét chia đầu vào của nó thành các mã thông báo bằng cách sử dụng một mẫu dấu phân cách, theo mặc định sẽ khớp với khoảng trắng. Sau đó, các mã thông báo kết quả có thể được chuyển đổi thành các giá trị thuộc các loại khác nhau bằng các phương pháp tiếp theo khác nhau.
Ví dụ 1: Với việc sử dụng vòng lặp
Java
nhập
java.io.File;
nhập
java.util.Scanner;
public
class
ReadFromFileUsingScanner
{
public
static
void
main (String [] args)
throws
Ngoại lệ
< p class = "line number9 index8 alt2">
{
Tệp tệp =
mới
Tệp (
"C: \\ Users \\ pankaj \\ Desktop \\ test.txt "
);
Máy quét sc =
new
Máy quét (tệp); code >
while
(sc.hasNextLine ())
System.out.println (sc.nextLine ()); < / code>
}
}
Đầu ra:
Nếu bạn muốn viết mã, hãy tham khảo GeeksforGeeks pre >Ví dụ 2: Không sử dụng vòng lặp
Java
< / p>
nhập
java.io.File; < / code>
import
java.io.FileNotFoundException;
< / p>< p class = "line number7 index6 alt2">
nhập
java.util.Scanner;
public
class code >
ReadingEntireFileWithoutLoop
{
public
static
void
main (String [] args)
ném
FileNotFoundException
{
< code class = "trơn"> Tệp tin =
new
Tệp (
" C: \\ Users \\ pankaj \\ Desktop \\ test.txt "
);
Máy quét sc =
new
Máy quét (tệp);
< code class = "undefined space">
sc.useDelimiter (
"\\ Z"
);
code>
System.out.println (sc.next ());
}
}
Đầu ra:
Nếu bạn muốn viết mã, hãy tham khảo GeeksforGeeksPhương pháp 4: > Đọc toàn bộ tệp trong một danh sách
Đọc tất cả các dòng từ tệp. Phương pháp này đảm bảo rằng tệp được đóng khi tất cả các byte đã được đọc hoặc lỗi I / O, hoặc ngoại lệ thời gian chạy khác, được ném ra. Các byte từ tệp được giải mã thành các ký tự bằng cách sử dụng bộ ký tự được chỉ định.
Cú pháp:
public static List readAllLines (Path path, Charset cs) ném IOExceptionPhương thức này nhận dạng dòng sau đây terminators:
\ u000D theo sau là \ u000A, CARRIAGE RETURN theo sau là LINE FEED \ u000A, LINE FEED \ u000D, QUAY LẠI HÀNG HÓAVí dụ
Java
< / p>
nhập
java.util. *;
nhập
java .nio.charset.StandardCharsets;
nhập
java.nio .file. *;
nhập
java.io. * ;
public
class
ReadFileIntoList
{
public
static
Danh sách & lt; Chuỗi & gt; readFileInList (String fileName)
{
Danh sách & lt; Chuỗi & gt; lines = Collections.emptyList ();
thử < / code>
{
lines =
Files.readAllLines (Paths.get (fileName), StandardCharsets.UTF_8);
}
p>
catch
(IOException e )
{
e.printStackTrace ();
}
code>
return
lines;
}
public
static
void
main (String [] args)
< p class = "line number28 index27 alt1">
{
Danh sách l = readFileInList (
"C: \\ Users \\ pankaj \\ Máy tính để bàn \\ test.java "
);
Iterator & lt; String & gt; itr = l.iterator ();
while < / code>
(itr.hasNext ())
System.out.println (itr.next ());
< / code>
}
}
Đầu ra:
Nếu bạn muốn viết mã, hãy tham khảo GeeksforGeeksPhương pháp 5: Đọc tệp văn bản dưới dạng chuỗi
< strong> Ví dụ
Java
< p>
package
io;
nhập
java.nio.file. * ;;
< p class = "line number7 index6 alt2">
public
class code >
ReadTextAsString {
public
static
Chuỗi readFileAsString (String fileName)
ném
Ngoại lệ
{
code >
Dữ liệu chuỗi =
""
;
data =
new
String (Files.readAllBytes (Paths.get (fileName)));
< / code>
return
data;
}
public
static
void < / code>
main (String [] args) < / code>
ném
Ngoại lệ
{
String data = readFileAsString (
"C: \\ Users \\ pankaj \\ Desktop \\ test.java"
);
System.out.println (dữ liệu);
}
< / p>
}
Đầu ra:
Nếu bạn muốn tham khảo mã cho GeeksforGeeksBài viết này được đóng góp bởi targe Pankaj Kumar . Nếu bạn thích GeeksforGeeks và muốn đóng góp, bạn cũng có thể viết một bài báo bằng cách sử dụng write.geeksforgeeks.org hoặc gửi bài viết của bạn qua thư tới review-team@geeksforgeeks.org. Xem bài viết của bạn xuất hiện trên trang chính của GeeksforGeeks và trợ giúp những Geeks khác. Vui lòng viết bình luận nếu bạn thấy bất kỳ điều gì không chính xác hoặc bạn muốn chia sẻ thêm thông tin về chủ đề đã thảo luận ở trên.
Ghi chú cá nhân của tôi
Xem thêm những thông tin liên quan đến chủ đề đọc một tệp văn bản java
Java read CSV File 📰
- Tác giả: Bro Code
- Ngày đăng: 2020-07-06
- Đánh giá: 4 ⭐ ( 9427 lượt đánh giá )
- Khớp với kết quả tìm kiếm: IMPORTANT NOTE: If values in your CSV contain commas naturally, they will be split. (Ex. $1,000). If this is the case, replace:
String[] row = line.split(",");
with
String[] row = line.split(",(?=([^\\"]*\\"[^\\"]*\\")*[^\\"]*$)");^ This is regex and is very complicated. It looks for string patterns. Explaining this requires another video entirely.
//******************************************************
import java.io.*;public class Main {
public static void main(String[] args) {
//CSV = Comma-Separated Values
// text file that uses a comma to separate valuesString file = "src\\\\students.csv";
BufferedReader reader = null;
String line = "";try {
reader = new BufferedReader(new FileReader(file));
while((line = reader.readLine()) != null) {String[] row = line.split(",");
//String[] row = line.split(",(?=([^\\"]*\\"[^\\"]*\\")*[^\\"]*$)");
//use this if your values already contain commas
for(String index : row) {
System.out.printf("%-10s", index);
}
System.out.println();
}
}
catch(Exception e) {
e.printStackTrace();
}
finally {
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//******************************************************
Đọc file trong java với lớp BufferedReader
- Tác giả: viettuts.vn
- Đánh giá: 3 ⭐ ( 8483 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Lớp BufferedReader trong java được sử dụng để đọc văn bản từ một input stream dựa trên các ký tự. Nó có thể được sử dụng để đọc dòng dữ liệu theo dòng
Đọc file trong java với lớp BufferedReader
- Tác giả: hoclaptrinh.vn
- Đánh giá: 3 ⭐ ( 4108 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Lớp BufferedReader trong java được sử dụng để đọc văn bản từ một input stream dựa trên các ký tự (character stream). Nó có thể được sử dụng để đọc dữ liệu t...
3 Cách đọc File trong Java Phổ biến nhất
- Tác giả: niithanoi.edu.vn
- Đánh giá: 5 ⭐ ( 2142 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Đọ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.
Tổng hợp cách đọc file text trong java
- Tác giả: shareprogramming.net
- Đánh giá: 5 ⭐ ( 7947 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Chúng ta có thể sử dụng hầu hết các subclass của InputStream như FileInputStream, BufferedInputStream, ObjectInputStream etc hoặc các subclass của Inpu
Đọc ghi file MS Word bằng Java với Apache POI
- Tác giả: stackjava.com
- Đánh giá: 3 ⭐ ( 4630 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Đọc ghi file MS Word bằng Java với Apache POI. Apache POI là một thư viện mã nguồn mở cung cấp bởi apache được sử dụng để xử lý các file office như word, excel, powerpoint...
Đọc file với lớp BufferedReader
- Tác giả: hiepsiit.com
- Đánh giá: 4 ⭐ ( 9486 lượt đánh giá )
- Khớp với kết quả tìm kiếm:
Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình