Các ví dụ mã Java hữu ích để đọc và ghi tệp văn bản
Bạn đang xem: cách đọc tệp txt trong java
Cách đọc và ghi tệp văn bản trong Java
- Chi tiết
- Được viết bởi Nam Ha Minh
-
Cập nhật lần cuối vào ngày 28 tháng 7 2019 & amp; nbsp | & amp; nbsp
In
Email
Trong hướng dẫn này, chúng tôi chỉ cho bạn cách đọc và viết thành văn bản (hoặc ký tự) tệp sử dụng các lớp có sẵn trong gói
java.io
. Trước tiên, hãy xem xét các lớp khác nhau có khả năng đọc và ghi các luồng ký tự.
1. Reader, InputStreamReader, FileReader và BufferedReader
Reader
là lớp trừu tượng để đọc các luồng ký tự. Nó triển khai các phương thức cơ bản sau:
-
read ()
: đọc một ký tự.
-
read (char [])
: đọc một mảng ký tự.
-
bỏ qua (dài)
: bỏ qua một số ký tự.
-
close ()
p>: đóng luồng.
InputStreamReader
là cầu nối từ luồng byte đến luồng ký tự. Nó chuyển đổi các byte thành các ký tự bằng cách sử dụng một bộ ký tự được chỉ định. Bộ ký tự có thể là mã ký tự mặc định của hệ điều hành hoặc có thể được chỉ định rõ ràng khi tạo một
InputStreamReader
.
< p> FileReader
là một lớp thuận tiện để đọc các tệp văn bản bằng cách sử dụng mã hóa ký tự mặc định của hệ điều hành.
BufferedReader
>
đọc văn bản từ một luồng ký tự một cách hiệu quả (các ký tự được đệm để tránh thường xuyên đọc từ luồng bên dưới) và cung cấp một phương pháp thuận tiện để đọc một dòng văn bản
readLine () < /p>
Biểu đồ sau cho thấy mối quan hệ của các lớp trình đọc này trong gói
java.io
: < h2>
2. Writer, OutputStreamWriter, FileWriter và BufferedWriter
Người viết
p> là lớp trừu tượng để viết các luồng ký tự. Nó triển khai các phương thức cơ bản sau:
-
write (int)
: viết một ký tự.
-
write (char [])
: viết một mảng ký tự.
-
write (Chuỗi)
: viết một chuỗi.
-
close ()
< / p>: đóng luồng.
OutputStreamWriter
là cầu nối từ luồng byte đến luồng ký tự. Các ký tự được mã hóa thành byte bằng cách sử dụng một bộ ký tự được chỉ định. Bộ ký tự có thể là mã ký tự mặc định của hệ điều hành hoặc có thể được chỉ định rõ ràng khi tạo một
OutputStreamWriter
.
< p> FileWriter
là một lớp thuận tiện để viết các tệp văn bản bằng cách sử dụng mã hóa ký tự mặc định của hệ điều hành.
BufferedWriter
>
viết văn bản vào luồng ký tự một cách hiệu quả (các ký tự, mảng và chuỗi được đệm để tránh thường xuyên ghi vào luồng bên dưới) và cung cấp một phương pháp thuận tiện để viết dấu phân cách dòng:
newLine ()
. Biểu đồ sau cho thấy mối quan hệ của các lớp trình viết này trong
java.io
p > gói:
3. Mã hóa ký tự và bộ ký tự
Khi xây dựng đối tượng trình đọc hoặc người viết, mã hóa ký tự mặc định của hệ điều hành sẽ được sử dụng (ví dụ: Cp1252 trên Windows):
FileReader reader = mới FileReader ("MyFile.txt"); FileWriterriter = new FileWriter ("YourFile.txt");
Vì vậy, nếu chúng ta muốn sử dụng một bộ ký tự cụ thể, hãy sử dụng
InputStreamReader
hoặc
Thay vào đó, OutputStreamWriter
. Ví dụ:
InputStreamReader reader = new InputStreamReader ( new FileInputStream ("MyFile.txt"), "UTF-16");
Điều đó tạo ra một trình đọc mới với mã hóa ký tự Unicode UTF-16.Và câu lệnh sau xây dựng một trình viết với mã hóa UTF-8: < pre class = "brush: java"> OutputStreamWriterriter = new OutputStreamWriter (
new FileOutputStream (“YourFile.txt”), “UTF-8”);
Trong trường hợp chúng tôi muốn sử dụng
BufferedReader
, chỉ cần bọc
InputStreamReader
bên trong, ví dụ:
InputStreamReader reader = new InputStreamReader ( new FileInputStream ("MyFile.txt"), "UTF-16"); BufferedReader bufReader = new BufferedReader (trình đọc);
Và đối với một ví dụ
BufferedWriter
:
OutputStreamWriterriter = new OutputStreamWriter ( new FileOutputStream ("YourFile.txt"), "UTF-8"); BufferedWriter bufWriter = new BufferedWriter (nhà văn);
Bây giờ, hãy xem một số ví dụ hoàn chỉnh.
4. Ví dụ về đọc Java từ tệp văn bản
Chương trình nhỏ sau đây đọc từng ký tự đơn lẻ từ tệp
MyFile.txt
và in tất cả các ký tự ra bảng điều khiển đầu ra:
gói net.codejava.io; nhập java.io.FileReader; nhập java.io.IOException; / ** * Chương trình này trình bày cách đọc các ký tự từ tệp văn bản. * @author www.codejava.net * * / public class TextFileReadingExample1 { public static void main (String [] args) { thử { FileReader reader = new FileReader ("MyFile.txt"); ký tự int; while ((character = reader.read ())! = -1) { Ký tự System.out.print ((char)); } reader.close (); } catch (IOException e) { e.printStackTrace (); } } }
Ví dụ sau đọc một tệp văn bản với giả định rằng mã hóa là UTF-16:
package net.codejava.io; nhập java.io.FileInputStream; nhập java.io.IOException; nhập java.io.InputStreamReader; / ** * Chương trình này trình bày cách đọc các ký tự từ tệp văn bản bằng cách sử dụng * một bộ ký tự được chỉ định. * @author www.codejava.net * * / public class TextFileReadingExample2 { public static void main (String [] args) { thử { FileInputStream inputStream = new FileInputStream ("MyFile.txt"); Đầu đọc InputStreamReader = new InputStreamReader (inputStream, "UTF-16"); ký tự int; while ((character = reader.read ())! = -1) { Ký tự System.out.print ((char)); } reader.close (); } catch (IOException e) { e.printStackTrace (); } } }
Và ví dụ sau sử dụng
BufferedReader
để đọc từng dòng một tệp văn bản (đây là cách hiệu quả và ưu tiên nhất):
gói net.codejava.io; nhập java.io.BufferedReader; nhập java.io.FileReader; nhập java.io.IOException; / ** * Chương trình này trình bày cách đọc các ký tự từ tệp văn bản * sử dụng BufferedReader để đạt hiệu quả. * @author www.codejava.net * * / public class TextFileReadingExample3 { public static void main (String [] args) { thử { FileReader reader = new FileReader ("MyFile.txt"); BufferedReader đệmReader = new BufferedReader (trình đọc); Dòng chuỗi; while ((line = bufferedReader.readLine ())! = null) { System.out.println (dòng); } reader.close (); } catch (IOException e) { e.printStackTrace (); } } }
5. Ví dụ về việc ghi vào tệp văn bản trong Java
Trong ví dụ sau,
FileWriter
được sử dụng để viết hai từ “Hello World” và “Good Bye! ” tới tệp có tên
MyFile.txt
:
package net.codejava.io; nhập java.io.FileWriter; nhập java.io.IOException; / ** * Chương trình này trình bày cách ghi các ký tự vào tệp văn bản. * @author www.codejava.net * * / lớp công khai TextFileWritingExample1 { public static void main (String [] args) { thử { FileWriterriter = new FileWriter ("MyFile.txt", true); riter.write ("Xin chào Thế giới"); riter.write ("\ r \ n"); // viết dòng mới riter.write ("Tạm biệt!"); nhà văn.close (); } catch (IOException e) { e.printStackTrace (); } } }
Lưu ý rằng, người viết sử dụng mã hóa ký tự mặc định của hệ điều hành theo mặc định. Nó cũng tạo một tệp mới nếu không thoát hoặc ghi đè tệp hiện có. Nếu bạn muốn nối văn bản vào một tệp hiện có, hãy chuyển một cờ boolean có giá trị true vào phương thức khởi tạo của lớp writer:
FileWriterriter = new FileWriter ("MyFile.txt", true); < / pre> Ví dụ sau sử dụngBufferedReader
bao bọcFileReader
để nối văn bản vào một tệp hiện có: < pre class = "brush: java"> gói net.codejava.io; nhập java.io.BufferedWriter; nhập java.io.FileWriter; nhập java.io.IOException; / ** * Chương trình này trình bày cách ghi các ký tự vào tệp văn bản * sử dụng BufferedReader để đạt hiệu quả. * @author www.codejava.net * * / lớp công khai TextFileWritingExample2 { public static void main (String [] args) { thử { FileWriterriter = new FileWriter ("MyFile.txt", true); BufferedWriter bufferedWriter = new BufferedWriter (nhà văn); bufferedWriter.write ("Xin chào Thế giới"); bufferedWriter.newLine (); bufferedWriter.write ("Hẹn gặp lại!"); bufferedWriter.close (); } catch (IOException e) { e.printStackTrace (); } } }
Đây là cách ưa thích để ghi vào tệp văn bản vì
BufferedReader
cung cấp cách hiệu quả để viết các luồng ký tự. Ví dụ sau chỉ định mã hóa ký tự cụ thể (UTF-16) khi ghi vào tệp:
package net.codejava.io; nhập java.io.BufferedWriter; nhập java.io.FileOutputStream; nhập java.io.IOException; nhập java.io.OutputStreamWriter; / ** * Chương trình này trình bày cách ghi các ký tự vào tệp văn bản bằng cách sử dụng * một bộ ký tự được chỉ định. * @author www.codejava.net * * / lớp công khai TextFileWritingExample3 { public static void main (String [] args) { thử { FileOutputStream outputStream = new FileOutputStream ("MyFile.txt"); OutputStreamWriter outputStreamWriter = new OutputStreamWriter (outputStream, "UTF-16"); BufferedWriter bufferedWriter = new BufferedWriter (outputStreamWriter); bufferedWriter.write ("Xin chào"); bufferedWriter.newLine (); bufferedWriter.write ("Hẹn gặp lại!"); bufferedWriter.close (); } catch (IOException e) { e.printStackTrace (); } } }
Chương trình này ghi một số chuỗi Unicode (tiếng Việt) vào tệp văn bản được chỉ định.
LƯU Ý:
Từ Java 7, bạn có thể sử dụng
thử (FileReader reader = new FileReader ("MyFile.txt")) { ký tự int; while ((character = reader.read ())! = -1) { Ký tự System.out.print ((char)); } } catch (IOException e) { e.printStackTrace (); }
Tham khảo:
Hướng dẫn IO về Tệp Liên quan:
Các hướng dẫn IO về Tệp Java khác:
Giới thiệu về Tác giả:
Nam Hà Minh là lập trình viên Java được chứng nhận ( SCJP và SCWCD). Anh bắt đầu lập trình với Java từ thời Java 1.4 và bắt đầu yêu Java kể từ đó. Kết bạn với anh ấy trên
lập trình viên Java được chứng nhận (SCJP và SCWCD). Anh bắt đầu lập trình với Java từ thời Java 1.4 và bắt đầu yêu Java kể từ đó. Kết bạn với anh ấy trên Facebook và xem video Java của anh ấy trên YouTube. p> Phần đính kèm: TextFileReadWriteExamples.zip [mã nguồn Java] 4 kB
Thêm nhận xét
Trong hướng dẫn này, chúng tôi chỉ cho bạn cách đọc và ghi vào tệp văn bản (hoặc ký tự) bằng cách sử dụng các lớp có sẵn trong gói. Đầu tiên, hãy xem xét các lớp khác nhau có khả năng đọc và ghi các luồng ký tự. Là lớp trừu tượng để đọc các luồng ký tự. Nó thực hiện các phương thức cơ bản sau: là một cầu nối từ các luồng byte đến các luồng ký tự. Nó chuyển đổi các byte thành các ký tự bằng cách sử dụng một bộ ký tự được chỉ định. Bộ ký tự có thể là mã hóa ký tự mặc định của hệ điều hành hoặc có thể được chỉ định rõ ràng khi tạo anis một lớp thuận tiện để đọc các tệp văn bản bằng cách sử dụng mã hóa ký tự mặc định của hệ điều hành. Đọc văn bản từ luồng ký tự một cách hiệu quả (các ký tự được lưu vào bộ đệm tránh thường xuyên đọc từ luồng bên dưới) và cung cấp một phương pháp thuận tiện để đọc một dòng văn bản. Biểu đồ sau cho thấy mối quan hệ của các lớp trình đọc này trong gói: là lớp trừu tượng để viết các luồng ký tự. Nó thực hiện các phương thức cơ bản sau: là một cầu nối từ các luồng byte đến các luồng ký tự. Các ký tự được mã hóa thành byte bằng cách sử dụng một bộ ký tự được chỉ định. Bộ ký tự có thể là mã hóa ký tự mặc định của hệ điều hành hoặc có thể được chỉ định rõ ràng khi tạo anis một lớp thuận tiện để viết các tệp văn bản bằng cách sử dụng mã hóa ký tự mặc định của hệ điều hành. Ghi văn bản vào một dòng ký tự một cách hiệu quả (ký tự, mảng và chuỗi được đệm để tránh thường xuyên ghi vào dòng bên dưới) và cung cấp một phương pháp thuận tiện để viết dấu phân cách dòng:. Biểu đồ sau đây cho thấy mối quan hệ của các lớp người viết này trong gói: Khi xây dựng đối tượng người đọc hoặc người viết, mã hóa ký tự mặc định của hệ điều hành được sử dụng (ví dụ: Cp1252 trên Windows): Vì vậy, nếu chúng tôi muốn sử dụng một bộ ký tự cụ thể, hãy sử dụng anorinstead. Ví dụ: Điều đó tạo ra một trình đọc mới với mã hóa ký tự Unicode UTF-16Và câu lệnh sau xây dựng một trình ghi với mã hóa UTF-8: Và đối với một ví dụ: Bây giờ, hãy xem một số ví dụ hoàn chỉnh. Chương trình nhỏ sau đây đọc mọi một ký tự từ tệp và in tất cả các ký tự ra bảng điều khiển đầu ra: Ví dụ sau đọc tệp văn bản với giả định rằng mã hóa là UTF-16: Và ví dụ sau sử dụng ato đọc từng dòng một tệp văn bản (đây là cách hiệu quả nhất và cách ưa thích): Trong ví dụ sau, ais đã sử dụng để viết hai từ “Hello World” và “Good Bye!” vào một tệp có tên Lưu ý rằng, người viết sử dụng mã hóa ký tự mặc định của hệ điều hành theo mặc định. Nó cũng tạo một tệp mới nếu không thoát hoặc ghi đè tệp hiện có. Nếu bạn muốn nối văn bản vào một tệp hiện có, hãy chuyển cờ boolean có giá trị true vào phương thức khởi tạo của lớp nhà văn: Ví dụ sau sử dụng athat kết thúc ato nối văn bản vào tệp hiện có: Đây là cách ưa thích để ghi vào tệp văn bản vì chương trình cung cấp cách hiệu quả để viết các luồng ký tự Và ví dụ sau chỉ định mã hóa ký tự cụ thể (UTF-16) khi ghi vào tệp: Chương trình này ghi một số chuỗi Unicode (tiếng Việt) vào tệp văn bản được chỉ định.Từ Java 7, bạn có thể sử dụng câu lệnh try-with-resources để đơn giản hóa mã mở và đóng trình đọc / người viết. Ví dụ:
Xem thêm những thông tin liên quan đến chủ đề cách đọc tệp txt trong java
Java: Read Text File Easily
- Tác giả: Alex Lee
- Ngày đăng: 2018-12-13
- Đánh giá: 4 ⭐ ( 4353 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Full Java Course: https://course.alexlorenlee.com/courses/learn-java-fast
Get my favorite programming audiobook for free! https://audibletrial.com/alexleefree
Free tips: https://bit.ly/3vuD81CSpringboard Software Engineering BootCamp (Use my code ALEXLEE for $1000 USD off): https://bit.ly/3EZp0As
If you’re new to programming, I recommend solving challenges on Edabit: https://edabit.com/?ref=alexlee
20% off Brain.fm (awesome): https://www.brain.fm/alexlee20
20% off Brilliant subscription: https://brilliant.sjv.io/alexlee20
Java Certificate: https://imp.i384100.net/CourseraJava
Tabnine autocomplete: https://bit.ly/3ilJLMQ
Get SERVICE HOURS as an online tutor or FREE ONLINE TUTORING for K-8 students: https://connectmego.org/Store: https://qaya.store/alex-lee
I show you exactly how to read and write text files, line by line in java! ✅ Simply write this code to open the file and get the text from it line by line using a scanner.
Learn java in just 13 minutes: https://youtu.be/RRubcjpTkks
The text file I used: http://textfiles.com/100/captmidn.txt
Java made it easy for reading from files and writing to files. First, open the file by creating using File(“path/to/file.txt”); then scan through the file line by line using Scanner to read from the file. If you want to write to a new file simply use FileWriter(“”path/to/newfile.txt””);
You’ll get the hang of reading from files and writing to files in java! They aren’t too bad 🙂 To read file line by line and to write a file in java are very similar. There a few quirks like importing the libraries and adding the “Exceptions” but once you get those and the paths right, you should be good to go!
💻 Source Code: https://github.com/alexlorenlee/JavaTutorialCode/blob/master/Programs/ReadFile.java
I hope you enjoyed this tutorial on java file reading and writing! I like to have a nice mix of tutorials and actual projects for you all 🙂
Do you want to learn how to code from scratch, in Java? Check out my Java Tutorial For Beginners: https://youtu.be/woJb2hAfkO0
Was this helpful for you? If you have questions about reading files in java or writing files in java, please ask in the comments, there are a lot of people just like you –
Disclosure: Springboard, Brilliant, Audible, Brain.fm, Edabit, Tabnine links provided are linked to my affiliate accounts & support the channel.
~
https://instagram.com/alexlorenleeAlex Lee
Cách đọc ghi file trong java
- Tác giả: nguyenvanhieu.vn
- Đánh giá: 3 ⭐ ( 4463 lượt đánh giá )
- Khớp với kết quả tìm kiếm: CÁCH ĐỌC GHI FILE TRONG JAVA. Xin chào các bạn lại là mình đây, hôm nay mình quyết định viết một bài để hướng dẫn các bạn cách đọc ghi file trong Java.
3 Cách đọc File trong Java Phổ biến nhất
- Tác giả: niithanoi.edu.vn
- Đánh giá: 5 ⭐ ( 9934 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 ⭐ ( 7258 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ách đọc file trong Java
- Tác giả: freetuts.net
- Đánh giá: 4 ⭐ ( 8789 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Trong bài này mình sẽ hướng dẫn các bạn cách đọc file trong Java bằng cách sử dụng BufferedInputStream và BufferedInputStream
Java: Cách đọc tệp văn bản
- Tác giả: qastack.vn
- Đánh giá: 3 ⭐ ( 3978 lượt đánh giá )
- Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Bạn có thể sử dụng Files#readAllLines()để chuyển tất cả các dòng của tệp văn bản thành…
Cách tạo, đọc và ghi file trong Java
- Tác giả: daibang.info
- Đánh giá: 3 ⭐ ( 8902 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