- Bài 1: Tổng quan ngôn ngữ Java
- Bài 2: Hướng dẫn cài đặt và cấu hình Java
- Bài 3: Hướng dẫn cài đặt và cấu hình Intellij IDEA trên Window
- Bài 4: Tạo Project và làm quen với Intelij IDEA
- Bài 5: Cú pháp và quy tắc cơ bản trong Java
- Bài 6: Các kiểu dữ liệu trong Java
- Bài 7: Các kiểu biến trong Java
- Bài 8: Toán tử trong Java
- Bài 9: Hệ thống Unicode trong Java
- Bài 10: Các kiểu vòng lặp
- Bài 11: Câu lệnh điều khiển rẽ nhánh
- Bài 12: Câu lệnh Break, Continue trong Java
- Bài 13: Lớp và đối tượng
- Bài 14: Tính chất của lập trình hướng đối tượng trong Java
- Bài 15: Abstract class và Interface trong Java
- Bài 16: Từ khóa super và this trong Java
- Bài 17: Từ khóa static và final trong Java
- Bài 18: Mảng (Array) trong Java
- Bài 19: Package trong Java
- Bài 21: String trong Java
- Bài 22: StringBuffer và StringBuilder
- Bài 23: Tổng quan về File và I/O
- Bài 24: Xử lý nhập xuất bằng Byte Stream và Character Stream
- Bài 25: Thao tác với tệp và thư mục trong Java
- Bài 26: Tổng quan về Collection trong Java
- Bài 27: Những Interface phổ biến trong Java Collection Framework
- Bài 28: Những Class được triển khai dựa trên Interface của Java Collection
- Bài 29: Khái niệm xử lý ngoại lệ trong Java
- Bài 30: Hướng dẫn xử lý ngoại lệ trong Java
- Bài 31: Đa luồng trong Java
- Bài 32: Thread synchronization trong Java
- Bài 33: Tổng quan về Java AWT
- Bài 34: Container trong Java AWT
- Bài 35: Component trong Java AWT
- Bài 36: Layout Manager trong Java AWT
- Bài 37: Xử lý sự kiện trong Java AWT
- Bài 38: Tổng quan về Java Swing
- Bài 39: Container trong Java Swing
- Bài 40: Component trong Java Swing
- Bài 41: Layout trong Java Swing
- Bài 42: Event trong Java Swing
- Bài 43: Menu trong Java Swing
- Bài 44: Kết nối cơ sở dữ liệu với thư viện JDBC trong Java
Bài 23: Tổng quan về File và I/O - Lập trình Java cơ bản
Đăng bởi: Admin | Lượt xem: 3370 | Chuyên mục: Java
Gói java.io chứa hầu như tất cả các lớp mà bạn cần để thực hiện đầu vào, đầu ra (I/O) trong Java. Tất cả những stream này biểu diễn nguồn đầu vào và đích đầu ra. Stream trong gói java.io hỗ trợ nhiều kiểu dữ liệu khác nhau như kiểu dữ liệu gốc, đối tượng các ký tự nội bộ,...
Stream trong Java có thể được định nghĩa là một dãy dữ liệu. Có 2 loại Stream trong Java, bao gồm:
- InputStream: được sử dụng để đọc dữ liệu từ một nguồn.
- OutputStream: được sử dụng để ghi dữ liệu vào đích.
1. Byte Stream
Byte Stream trong Java được sử dụng để thực hiện đầu vào và đầu ra của các byte (8 bit). Mặc dù có nhiều lớp liên quan đến byte stream, trong đó các lớp được sử dụng thường xuyên nhất phải kể đến là FileInputStream và FileOutputStream.
Ví dụ:
package com.company;
import java.io.*;
public class Main {
public static void main(String args[]) {
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream("E:/input.txt");
out = new FileOutputStream("E:/output.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
Trong ví dụ trên, giả sử ta có một file input.txt tại ổ E với nội dung "BkitSoftware". Ta sử dụng FileInputStream để đọc nội dung file input.txt, FileOutputStream để tạo và ghi nội dung "BkitSoftware" cho file output.txt.
2. Character Stream
Byte Stream trong Java được sử dụng để thực hiện đầu vào và đầu ra của các byte (8-bit), còn Character stream trong Java được sử dụng để thực hiện đầu vào và đầu ra của Unicode 16 bit.
Mặc dù có nhiều lớp liên quan đến character stream, nhưng các lớp được sử dụng nhiều nhất phải kể đến là FileReader và FileWriter. Mặc dù FileReader sử dụng FileInputStream và FileWriter sử dụng FileOutputStream, nhưng có một điểm khác ở đây là FileReader đọc 2byte cùng lúc và FileWriter ghi 2 byte cùng một lúc.
Ví dụ:
package com.company;
import java.io.*;
public class Main {
public static void main(String args[]) {
FileReader in = null;
FileWriter out = null;
try {
in = new FileReader("E:/input.txt");
out = new FileWriter("E:/output.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Kết quả thu được là file output.txt có nội dung tương tự file input.txt.
3. Standard Stream
Tất cả các ngôn ngữ lập trình cung cấp hỗ trợ chuẩn I/O, tại đây các chương trình của người dùng có thể lấy dữ liệu từ bàn phím, sau đó tạo đầu ra trên màn hình máy tính.
Trong ngôn ngữ Java, người dùng được cùng cấp 3 phương thức:
- Standard Input (chuẩn đầu vào): Chuẩn này được sử dụng để nhập dữ liệu cho chương trình người dùng và thường thì bàn phím được sử dụng để làm chuẩn đầu vào và được biểu diễn là System.in.
- Standard Output (chuẩn đầu ra): Được sử dụng để xuất dữ liệu được tạo bởi chương trình người dùng và thường thì màn hình máy tính được sử dụng làm chuẩn đầu ra và được biểu diễn là System.out.
- Standard Error (lỗi chuẩn): Được sử dụng để xuất dữ liệu lỗi do chương trình tạo ra và màn hình máy tính được sử dụng để làm lỗi chuẩn và được biểu diễn dưới dạng System.err.
Ví dụ: Đọc dữ liệu nhập từ bàn phím, khi nhập kí tự 'k' thì kết thúc chương trình.
package com.company;
import java.io.*;
public class Main {
public static void main(String args[]) {
InputStreamReader cin = null;
try {
cin = new InputStreamReader(System.in);
System.out.println("Nhap cac ky tu, 'k' de thoat.");
char c;
do {
c = (char) cin.read();
System.out.print(c);
} while (c != 'k');
} catch (Exception e) {
} finally {
try {
if (cin != null) {
cin.close();
}
} catch (Exception e) {
}
}
}
}
Trong bài sau, chúng ta sẽ tìm hiểu cụ thể về xử lý xuất nhập bằng luồng byte và xử lý xuất nhập bằng luồng character.
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!
- Bài 1: Tổng quan ngôn ngữ Java
- Bài 2: Hướng dẫn cài đặt và cấu hình Java
- Bài 3: Hướng dẫn cài đặt và cấu hình Intellij IDEA trên Window
- Bài 4: Tạo Project và làm quen với Intelij IDEA
- Bài 5: Cú pháp và quy tắc cơ bản trong Java
- Bài 6: Các kiểu dữ liệu trong Java
- Bài 7: Các kiểu biến trong Java
- Bài 8: Toán tử trong Java
- Bài 9: Hệ thống Unicode trong Java
- Bài 10: Các kiểu vòng lặp
- Bài 11: Câu lệnh điều khiển rẽ nhánh
- Bài 12: Câu lệnh Break, Continue trong Java
- Bài 13: Lớp và đối tượng
- Bài 14: Tính chất của lập trình hướng đối tượng trong Java
- Bài 15: Abstract class và Interface trong Java
- Bài 16: Từ khóa super và this trong Java
- Bài 17: Từ khóa static và final trong Java
- Bài 18: Mảng (Array) trong Java
- Bài 19: Package trong Java
- Bài 21: String trong Java
- Bài 22: StringBuffer và StringBuilder
- Bài 23: Tổng quan về File và I/O
- Bài 24: Xử lý nhập xuất bằng Byte Stream và Character Stream
- Bài 25: Thao tác với tệp và thư mục trong Java
- Bài 26: Tổng quan về Collection trong Java
- Bài 27: Những Interface phổ biến trong Java Collection Framework
- Bài 28: Những Class được triển khai dựa trên Interface của Java Collection
- Bài 29: Khái niệm xử lý ngoại lệ trong Java
- Bài 30: Hướng dẫn xử lý ngoại lệ trong Java
- Bài 31: Đa luồng trong Java
- Bài 32: Thread synchronization trong Java
- Bài 33: Tổng quan về Java AWT
- Bài 34: Container trong Java AWT
- Bài 35: Component trong Java AWT
- Bài 36: Layout Manager trong Java AWT
- Bài 37: Xử lý sự kiện trong Java AWT
- Bài 38: Tổng quan về Java Swing
- Bài 39: Container trong Java Swing
- Bài 40: Component trong Java Swing
- Bài 41: Layout trong Java Swing
- Bài 42: Event trong Java Swing
- Bài 43: Menu trong Java Swing
- Bài 44: Kết nối cơ sở dữ liệu với thư viện JDBC trong Java