Chương 5 Nhập xuất

Nhập xuất trong Java được phân loại • Theo thứ tự truy xuất Truy xuất ngẫu nhiên –Random Access Files: cho phép đọc ghi tại bất kỳ vị trí nào Truy xuất tuần tự: đọc ghi theo thứ tự • Theo đặc điểm dữ liệu Nhập xuất nhị phân (Nhập xuất byte) Nhập xuất ký tự

pdf19 trang | Chia sẻ: lylyngoc | Lượt xem: 1541 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Chương 5 Nhập xuất, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
LẬP TRÌNH JAVA Chương 5 NHẬP XUẤT GV: Võ Hoàng Phương Dung  Giới thiệu  File  Random Access File  I/O stream 2/25 Nội dung  Nhập xuất trong Java được phân loại • Theo thứ tự truy xuất  Truy xuất ngẫu nhiên – Random Access Files: cho phép đọc ghi tại bất kỳ vị trí nào  Truy xuất tuần tự: đọc ghi theo thứ tự • Theo đặc điểm dữ liệu  Nhập xuất nhị phân (Nhập xuất byte)  Nhập xuất ký tự 3/25 Giới thiệu  Các lớp nhập xuất trong Java • Thuộc gói java.io.* • Được tổ chức theo cấu trúc kế thừa  Cấp thấp: đọc ghi trực tiếp trên thiết bị  Cấp cao: đọc ghi thông qua bộ đệm 4/25 Giới thiệu  java.io.File • Dùng để biểu diễn tên file hoặc thư mục  Hàm khởi tạo • File(String pathname); • File(String parent, String child); • File(File parent, String child);  Ví dụ: File file = new File("c:/aFolder/aFile.txt"); 5/25 File  boolean exists(): kiểm tra có tồn tại tên file hay thư mục  String getAbsolutePath(): lấy đường dẫn tuyệt đối  String getName(): trả về tên file hay thư mục  String getParent(): trả về tên thư mục cha  boolean isDirectory(): kiểm tra thư mục  boolean isFile(): kiểm tra file  String[] list(): liệt kê file & thư mục con 6/25 File  boolean canRead(): kiểm tra file có thể đọc  boolean canWrite():kiểm tra file có thể ghi  boolean canExecute():kiểm tra file có thể thực thi  boolean delete(): xoá file hoặc thư mục  long length(): trả lại chiều dài của đường dẫn  boolean mkdir(): tạo thư mục  boolean renameTo(File newname): đổi tên file hoặc thư mục 7/25 File  Cho phép ta truy nhập trực tiếp vào các tệp, có thể đọc, ghi các byte ở bất kỳ vị trí nào trong tệp.  Hàm khởi tạo • RandomAccessFile(String name, String mode) throws IOException • RandomAccessFile(File file, String mode) throws IOException Tham số mode: -“r”: Dùng để đọc. -“rw”: Dùng để ghi. 8/25 Random Access Files  Các phương thức • long getFilePointer() throws IOException : Trả về vị trí của con trỏ tệp. • long length() throws IOException: cho biết số byte hay độ dài của tệp. • void seek(long offset) throws IOException: Chuyển con trỏ tệp đi offset vị trí kể từ đầu tệp. • void close() throws IOException: Khi không cần truy nhập tệp nữa thì đóng lại. 9/25 Random Access Files  Stream là 1 dãy dữ liệu  Input stream cho việc đọc dữ liệu  Output stream cho việc ghi dữ liệu 10/25 I/O Stream 11/25 I/O Stream  Phân loại • Luồng byte (Byte streams)  Đọc ghi dữ liệu theo đơn vị byte  Tất cả các lớp thừa kế từ: InputStream & OutputStream • Luồng ký tự (Character streams)  Đọc ghi dữ liệu theo đơn vị ký tự  Tất cả các lớp thừa kế từ: Reader & Writer 12/25 I/O Stream  Ví dụ về luồng Byte import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class CopyBytes { public static void main(String[] args) throws IOException { FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream(“input.txt"); out = new FileOutputStream(“byteOutput.txt"); int c; while ((c = in.read()) != -1) {out.write(c); } } finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } 13/25 I/O Stream 14/25 I/O Stream  Ví dụ về luồng ký tự import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class CopyCharacters { public static void main(String[] args) throws IOException { FileReader in = null; FileWriter out = null; try { in = new FileReader(“input.txt"); out = new FileWriter(“characterOutput.txt"); int c; while ((c = in.read()) != -1){ out.write(c); } } finally { if (in != null) { in.close(); } if (out != null){ out.close(); } } } } 15/25 I/O Stream  Các lớp cơ bản của luồng Byte 16/25 I/O Stream Tên lớp Ý nghĩa FileInputStream Luồng nhập cho phép đọc dữ liệu từ File FileOutputStream Luồng xuất cho phép ghi dữ liệu xuống File ByteArrayInputStream Luồng nhập dữ liệu từ 1 mảng byte ByteArrayOutputStream Luồng xuất dữ liệu ra 1 mảng byte ObjectInputStream Luồng nhập các Object ObjectOutputStream Luồng xuất các Object BufferedInputStream Luồng nhập có đệm BufferedOutputStream Luồng xuất có đệm DataInputStream Luồng nhập dữ liệu là các kiểu dữ liệu chuẩn DataOutputStream Luồng xuất dữ liệu là các kiểu dữ liệu chuẩn  Các lớp cơ bản của luồng ký tự 17/25 I/O Stream Tên lớp Ý nghĩa BufferedReader Luồng nhập có đệm BufferedWriter Luồng xuất có đệm CharArrayReader Luồng nhập dữ liệu từ 1 mảng ký tự CharArrayWriter Luồng xuất dữ liệu ra 1 mảng ký tự InputStreamReader Luồng nhập chuyển luồng byte thành luồng ký tự OutputStreamWriter Luồng xuất chuyển luồng ký tự thành luồng byte StringReader Luồng đọc dữ liệu từ chuỗi StringWriter Luồng xuất dữ liệu ra chuỗi FileReader Luồng đọc dữ liệu từ File FileWriter Luồng xuất dữ liệu ra File LineNumberReader Luồng nhập đếm dòng PrintWriter Luồng xuất có định dạng  Nhập dữ liệu từ màn hình Console import java.io.*; class ReadBytes { public static void main(String args[]) throws IOException { byte data[] = new byte[100]; System.out.print("Enter some characters."); System.in.read(data); System.out.print("You entered: "); for(int i=0; i < data.length; i++) System.out.print((char) data[i]); } } 18/25 I/O Stream import java.io.*; class ReadBuffer { public static void main(String args[]) throws IOException { BufferedReader in=new BufferedReader (new InputStreamReader(System.in)); System.out.println("NHAP A:"); int a=Integer.parseInt (in.readLine()); System.out.println("NHAP B:"); int b=Integer.parseInt (in.readLine()); int ketqua; ketqua=a+b; System.out.println("ket qua bai toan a+b la:"+ketqua); } } 19/25 I/O Stream
Tài liệu liên quan