Bài giảng Lập trình hướng đối tượng (dùng Java) Chương 4 Vào ra dữ liệu trong Java cung cấp cho người học các kiến thức Tổng quan về vào ra dữ liệu trong Java, các lớp vào ra theo luồng ký tự, các lớp vào ra theo luồng byte, lớp File, vào ra đối tượng và áp dụng.
Chương Vào liệu Java TRẦN MINH THÁI Email: minhthai@huflit.edu.vn Website: www.minhthai.edu.vn Cập nhật: 18 tháng 07 năm 2016 Nội dung #2 Tổng quan vào liệu Java Các lớp vào theo luồng ký tự Các lớp vào theo luồng byte Lớp File Vào đối tượng áp dụng Tổng quan vào liệu #3 Các lớp vào theo luồng ký tự #4 Các lớp vào theo luồng byte #5 Vào liệu thiết bị chuẩn #6 • • • Vào liệu từ thiết bị chuẩn (bàn phím): System.in • • Một đối tượng lớp InputStream đọc ghi theo luồng byte Các phương thức hạn chế Thường sử dụng để khởi tạo đối tượng luồng khác để xử lý dễ dàng hơn: • • new BufferedReader(new InputStreamReader(System.in)) new Scanner(System.in) Ra liệu thiết bị chuẩn (màn hình): System.out • • Một đối tượng lớp PrintStream Cung cấp phương thức đầy đủ Vào liệu file #7 • • • Bước Tạo đối tượng file để đọc/ ghi Bước Thao tác xử lý file Bước Đóng file Vào liệu file #8 Có hai dạng file • • File nhị phân: Dữ liệu tổ chức theo dạng bit-by-bit File văn bản: Vào liệu file nhị phân #9 Ghi file • • FileOutputStream(filePath): ghi liệu theo luồng • Phương thức write(int) DataOutputStream(outputStreamObject): ghi liệu • Phương thức writeInt(), writeDouble(), writeChars(), !!! Ghi tiếp vào file có sẵn: bổ sung thêm tham số thứ true (mặc định không truyền false: ghi đè) Vào liệu file nhị phân #10 Đọc file • • FileInputStream(filePath): đọc liệu theo luồng • Phương thức int read() trả -1 đọc hết file DataInputStream(inputStreamObject): đọc liệu • Phương thức readInt(), readDouble(), Đóng file: close() Lớp File – Các phương thức #26 • • • • • boolean canRead(): trả true có quyền đọc boolean canWrite(): trả true có quyền ghi boolean canExecute(): trả true có quyền thực thi String getName() String getParent() Lớp File – Các phương thức #27 • • • • String[] list(): trả tên thư mục file String[] list(FileNameFilter filter): trả tên thư mục file có chứa filter File[] listFiles() File[] listFiles(FileFilter filter): trả đối tượng file thỏa mãn filter Lớp File – Các phương thức #28 • • • • • • boolean exists(): trả true tồn file, thư mục long length(): trả kích thước file (byte) boolean delete() void deleteOnExit(): xóa tắt máy ảo JVM boolean renameTo(File dest): đổi tên boolean setReadOnly(): thiết lập thuộc tính read-only Ví dụ liệt kê file có phần mở rộng tương ứng thư mục #29 public class TimFile implements FilenameFilter { String str; public TimFile(String ext){ str = "." + ext; } public boolean accept(File dir, String name) { return name.endsWith(str); } } Ví dụ liệt kê file có phần mở rộng tương ứng thư mục #30 public class TimFile implements FilenameFilter { public static void main(String []args) { Scanner input = new Scanner(System.in); String path, ext; System.out.print("Nhap vao ten thu muc: "); path = input.nextLine(); File file = new File(path); if(file.isDirectory()){ System.out.print("Phan mo rong: "); ext = input.nextLine(); String[] children; FilenameFilter filter = new TimFile(ext); children = file.list(filter); for(String child:children) System.out.println(child); } } } Bài tập #31 Tìm file thư mục • • Đầu vào: tên thư mục file cần tìm Đầu ra: đường dẫn file tìm (nếu có) Lớp Files #32 • • • Các phương thức static Đối số đối tượng từ lớp Path để định vị file hệ thống Tạo đối tượng Path từ đường dẫn file Paths.get(String filePath) Lớp Files – Các phương thức #33 • • • • • boolean isDirectory(Path): trả true thư mục boolean isRegularFile(Path): trả true file boolean isReadable(Path): trả true phép đọc boolean isWritable(Path) boolean isExecutable(Path) Lớp Files – Các phương thức #34 • • • Path createFile(Path, FileAttribute): tạo file Path createDirectory(Path, FileAttribute): tạo thư mục Path createDirectories(Path, FileAttribute): thạo thư mục, bao gồm thư mục cha không tồn Lớp Files – Các phương thức #35 • • • • • void deleteIfExist(Path): xóa boolean notExist(Path): trả true file không tồn long size(Path): trả kích thước file (byte) Path copy(Path source, Path target, CopyOption options) Path move(Path source, Path target, CopyOption options) Lớp Files – Các phương thức đọc #36 • • • byte[] readAllBytes(Path): đọc nội dung file vào mảng byte • InputStream newInputStream(Path, OpenOption): mở file trả lại đối tượng InputStream BufferedReader newBufferedReader(Path): mở file trả lại đối tượng BufferedReader BufferedReader newBufferedReader(Path, Charset): mở file trả lại đối tượng BufferedReader, hỗ trợ bảng mã khác (US-ASCII, UTF-16), mặc định(UTF-8) Lớp Files – Các phương thức ghi #37 • Path write(Path, byte[], OpenOption): ghi mảng byte vào file BufferedWriter newBufferedWriter(Path, OpenOption): mở tạo đối tượng BufferedWriter để ghi • • BufferedWriter newBufferedWriter(Path, Charset, OpenOption) OutputStream newOutputStream(Path, OpenOption): mở tạo đối tượng OutputStream để ghi Lớp Files – Các OpenOption #38 • • • • • • APPEND: ghi tiếp CREATE: tạo file ghi READ: mở để đọc WRITE: mở để ghi DELETE_ON_CLOSE: xóa đóng file DSYNC SYNC: yêu cầu đồng hóa có nhiều luồng truy cập vào file Lớp Files – Các CopyOption #39 • • COPY_ATTRIBUTES: Sao chép thuộc tính REPLACE_EXISTING: chép đè lên file cũ (nếu có) Q&A #40 ... filePath): Tạo đối tượng file nằm thư mục cha path !!! Chỉ tạo đối tượng (chưa tạo file hay thư mục) Lớp File – Các phương thức #25 • • boolean mkdir(): tạo thư mục có tên khởi tạo đối tượng File... liệu thiết bị chuẩn (màn hình): System.out • • Một đối tượng lớp PrintStream Cung cấp phương thức đầy đủ Vào liệu file #7 • • • Bước Tạo đối tượng file để đọc/ ghi Bước Thao tác xử lý file Bước... thiết bị chuẩn (bàn phím): System.in • • Một đối tượng lớp InputStream đọc ghi theo luồng byte Các phương thức hạn chế Thường sử dụng để khởi tạo đối tượng luồng khác để xử lý dễ dàng hơn: • •