Lớp FileInputStream giúp bạn có thể đọc nội dung của tệp dưới dạng luồng byte. Dưới đây là ví dụ đơn giản:
InputStream input = new FileInputStream("c:\\data\\input-text.txt");
int data = input.read();
while(data != -1) {
//do something with data...
doSomethingWithData(data);
data = input.read();
}
input.close();
Lưu ý: Xử lý ngoại lệ thích hợp đã bị bỏ qua ở đây để rõ ràng. Để tìm hiểu thêm về xử lý ngoại lệ chính xác, hãy chuyển tới Xử lý ngoại lệ Java IO.
Phương thức read() của một FileInputStream trả về một int chứa giá trị byte của byte được đọc. Nếu phương thức read() trả về -1, không còn dữ liệu nào để đọc trong luồng và nó có thể được đóng lại. Tức là -1 là giá trị int, không phải là giá trị byte. Có một sự khác biệt ở đây!
Nguồn
2012-04-08 05:30:06
Tôi cũng mắc lỗi này lần đầu tiên - phương thức read() thực sự trả về một byte dữ liệu, không phải số byte có thể đọc được. http://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html#read%28%29 – wattostudios
@Andrew Thompson Tôi nghĩ bạn đã đọc tài liệu của phương pháp sai. Bạn đọc một cho ** public int read (byte [] b) ** trong đó như tôi đang đề cập đến ** public int read() ** – GrowinMan
Có một số phương thức 'read()' khác nhau. Một trả về một byte đơn; những người khác điền vào một mảng và trả về _number_ của các byte đã được đọc. –