Đọc dữ liệu từ file text trong Java

Trước khi học bài này bạn nên đọc lại bài:

Để hiểu rõ về cách Java đọc dữ liệu một chút vì nó rất quan trọng nếu bạn không hiểu rõ cái này thì sẽ mãi không làm chủ được Java đâu 🙂

Tổng quan

doc-du-lieu-yeulaptrinh.pw

Các luồng và class trong I/O file text

Nhắc lại nguyên lý đọc dữ liệu trong Java một chút: các thiết bị vào ra (bàn phím, màn hình…) qua luồng rồi ta mới nhận được thông tin.

 luong-trong-doc-file-yeulaptrinh.pwSử dụng BufferedReader BufferedWriter

Đọc, ghi file với BufferedReader và BufferedWriter là cách đọc nhanh nhất trong Java, ngoài ra nó còn có nhiều tính năng có sẵn kèm theo như: đọc cả dòng, encoding… Có nhiều cách đọc, ghi file nhưng mình khuyên các bạn nên dùng cách này dù nó có dài hơn một chút (code bên dưới).

import java.io.*;
import java.util.*;
 
public class ReadTest2
{
	static long total = 0;
 
	private static void ReadLines() {
		try {
			String s = "";
			BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
			while (stdin.ready()) {
				s = stdin.readLine();
				for (int i=0; i<s.length(); i++)
					total += s.charAt(i);
			}
		} catch (Exception e) { System.err.println("Error"); }
	}
 
	public static void main(String args[])
	{
		long startTime = System.nanoTime();
		ReadLines();
		long stopTime = System.nanoTime();
		System.err.println(stopTime - startTime);
		System.err.println("t" + total);
	}
}

Sử dụng FileReader và FileWriter

Thằng này thì không hỗ trợ đọc từng dòng, mã hóa và nó làm việc với bảng mã mặc định của hệ thống nên nó không phải là cách tốt để đọc và ghi file.

static void copyFile(FileReader inputFile, FileWriter outputFile) {
try{
  // Read the first character.  
  int nextChar = inputFile.read();
  // Have we reached the end of file?  
  while(nextChar != -1) {
    outputFile.write(nextChar);
    // Read the next character.
    nextChar = inputFile.read();
  }
  outputFile.flush();
}
catch(IOException e) {  System.out.println("Unable to copy file");
}
}
Khuyên dùng

 

About Aida Nana

Nghề chính là chém gió, quăng bom và ném lựu đạn.
Nghề phụ là cắt cỏ, chém chuối, cưa cây……

Speak Your Mind

*