78 / 100
Bạn đang đọc: Java – Cách đọc ghi file trong java
Chào những bạn, hẳn thì trong quy trình học tập những bạn cũng đã gặp yếu tố đọc ghi tài liệu từ file rồi phải không ạ ! Chính vì vậy ngày hôm nay mình quyết định hành động viết một bài để hướng dẫn những bạn cách đọc ghi file trong Java .
Bài viết mình được chia làm hai phần chính đó là :
- Đọc dữ liệu đầu vào từ file.
- Ghi dữ liệu từ chương trình ra file.
Tóm Tắt
Đọc dữ liệu đầu vào từ file trong Java.
Ở đây mình đã sẵn sàng chuẩn bị một file tài liệu nguồn vào như dưới :
Lưu ý : Các bạn phải lưu file dưới định dạng unicode nhé !
Oke, giờ đây tất cả chúng ta sẽ viết một chương trình dùng để đọc tài liệu từ file có tên data.txt như trên .
Chương trình như bên dưới :
0123456789101112131415161718192021 |
packagecom.company; importjava.io.*; publicclassMain{ privatefinalstaticStringFILE_URL=” / home / tamvo / IdeaProjects / Hackerrank / src / com / company / data.txt “; publicstaticvoidmain(String[]args)throwsIOException{ Filefile=newFile(FILE_URL); InputStreaminputStream=newFileInputStream(file); InputStreamReaderinputStreamReader=newInputStreamReader(inputStream); BufferedReaderreader=newBufferedReader(inputStreamReader); Stringline=” “; while((line=reader.readLine())!=null){ System.out.println(line); } } } |
Sau khi chạy chương trình thì ta sẽ có hiệu quả sau :
Giờ mình sẽ lý giải từng cụ thể cho những bạn nha :
- FILE_URL: Chính là đường dẫn đến tệp, ở đây mình dùng đường dẫn tuyệt đối nên nó hơi dài xí.
- File: Lớp này sẽ lấy file dữ liệu từ đường dẫn ở trên, nếu đường dẫn không hợp lệ thì nó sẽ trả ra ngoại lệ đó nha!
- InputStream: Khởi tạo một inputStream từ file ở trên chuẩn bị cho việc đọc file.
- InputStreamReader: Từ inputStream ở trên tạo ra một đối tượng có thể đọc được. Ở đây là chỉ đọc được từng kí tự mà thôi nhé !
- BufferedReader: Từ inputStreamRead cũng tạo ra một đối tượng có thể đọc được.
Để thấy khác nhau thì những bạn hoàn toàn có thể xem đoạn code dưới đây :
0123456789101112131415161718192021222324252627 |
packagecom.company; importjava.io.*; publicclassMain{ privatefinalstaticStringFILE_URL=” / home / tamvo / IdeaProjects / Hackerrank / src / com / company / data.txt “; publicstaticvoidmain(String[]args)throwsIOException{ Filefile=newFile(FILE_URL); InputStreaminputStream=newFileInputStream(file); InputStreamReaderinputStreamReader=newInputStreamReader(inputStream); intc; while((c=inputStreamReader.read())!=-1){ System.out.print((char)c); } / * BufferedReader reader = new BufferedReader ( inputStreamReader ) ; String line = ” ” ; while ( ( line = reader. readLine ( ) ) ! = null ) { System. out.println ( line ) ; } * / } } |
Và hiệu quả khi chạy chương trình :
Chà rườm rà nhỉ ? Vậy sự khác nhau giữa chúng là gì ? 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ữ liệu theo dòng bằng phương thức readLine(). Nó giúp hiệu suất nhanh. Vậy nên mình khuyên các bạn nên sử dụng lớp BufferedReader để đọc file.
Ghi dữ liệu từ chương trình ra file trong Java.
Dưới đây là chương trình mình ghi tài liệu ra file data.txt :
012345678910111213141516171819202122232425262728 |
packagecom.company; importjava.io.*; publicclassMain{ privatefinalstaticStringFILE_URL=” / home / tamvo / IdeaProjects / Hackerrank / src / com / company / data.txt “; publicstaticvoidmain(String[]args)throwsIOException{ String[]data={ ” Hello Java ! “, ” Good bye ! “ }; Filefile=newFile(FILE_URL); OutputStreamoutputStream=newFileOutputStream(file); OutputStreamWriteroutputStreamWriter=newOutputStreamWriter(outputStream); for(Stringitem:data){ outputStreamWriter.write(item); / / Dùng để xuống hàng outputStreamWriter.write(” \ n “); } / / Đây là phương pháp quan trọng ! / / Nó sẽ bắt chương trình chờ ghi tài liệu xong thì mới kết thúc chương trình . outputStreamWriter.flush(); } } |
Sau khi chạy chương trình xong thì tác dụng sẽ như sau :
Để mình nói rõ phương pháp flush ( ) cho những bạn một chút ít. Trong một số ít trường hợp chương trình quá nhanh, đến nỗi nó chưa ghi tài liệu vào file kịp thì chương trình đã kết thúc. Để tránh điều này thì những bạn phải sử dụng phương pháp flush ( ) .
Bây giờ bạn thử chạy lại chương trình một lần nữa, bạn sẽ thấy dữ liệu trong file vẫn không đổi. Trong trường hợp bạn muốn ghi tiếp dữ liệu vào cuối file thì phải làm sao ?
012 |
OutputStreamoutputStream=newFileOutputStream(file,true) ; |
Đây là hiệu quả khi chạy chương trình thêm một lần nữa :
Oke, bài viết của mình đến đây là kết thúc. Cám ơn những bạn đã chú ý quan tâm theo dõi !
Source: https://final-blade.com
Category: Kiến thức Internet