Cung cấp giao diện để xử lý tệp và các thư mục trong hệ thống tệp . Lớp FILE định nghĩa các thuộc tính phụ thuộc vào môi trường được sử dụng để xử lý tệp và tên gọi các đường dẫn trong các thư mục một cách độc lập với môi trường . Lớp FILE có thể sử dụng để truy vấn vào hệ thống tệp để biết các thông tin về tệp và các thư mục . Lớp FILE cung cấp các hàm để nhận được các biểu diễn phụ thuộc vào môi trường của đường dẫn và các thành phần của đường dẫn .
1 Trường đại học dân lập Hải Phòng Khoa công nghệ thông tin ------------ ------------ Đề tài : Lớp File và truy cập ngẫu nhiên Giáo viên hướng dẫn: Phùng Anh Tuấn Nhóm sinh viên thực hiện : 1-Nguyễn Thùy Giang 2-Lục Thị Hương 3-Vũ Tuấn Hoàng CT801 2 Nội dung báo cáo I.Giới thiệu về lớp File . IV.Các lớp xử lý tệp. II. Một số hàm được sử dụng trong lớp File . V.Truy nhập tệp ngẫu nhiên . III. Các luồng I/O xử lý theo byte CT801 3 I.Giới thiệu về lớp File . 1-Chức năng : - Cung cấp giao diện để xử lý tệp và các thư mục trong hệ thống tệp . - Lớp FILE định nghĩa các thuộc tính phụ thuộc vào môi trường được sử dụng để xử lý tệp và tên gọi các đường dẫn trong các thư mục một cách độc lập với môi trường . - Lớp FILE có thể sử dụng để truy vấn vào hệ thống tệp để biết các thông tin về tệp và các thư mục . - Lớp FILE cung cấp các hàm để nhận được các biểu diễn phụ thuộc vào môi trường của đường dẫn và các thành phần của đường dẫn . 2-Các lớp được sử dụng: - FileInputStream(Lớp đọc dữ liệu từ tệp) - FileOutputStream (Lớp ghi dữ liệu lên tệp) - RandomAccessFile.(Truy cập ngẫu nhiên vào tệp) CT801 4 II. Một số hàm được sử dụng trong lớp File 1- String getName() : Cho lại tên tệp trong thư mục chỉ định Ví dụ: Tên của C:\java\bin\javac là javac 2- String getPath(): Cho lại tên đường dẫn (Tuyệt dối hay tương đối) chứa tệp chỉ định 3- String getAbsolutePath() : Tên đường dẫn tuyệt đối chứa tệp chỉ định . 4- long lastModified() : cho lại thời gian dạng số long của lần sửa đổi tệp cuối cùng. 5- long length(): kích thước tệp tính theo byte . 6- boolean equals(Object obj ) : hàm so sánh tên đường dẫn của obj tệp ,true nếu đồng nhất. 7- boolean exists()và boolean isFile() :trả lại true nếu tệp tồn tại trên đường dẫn hiện thời. 8- boolean isDirectory(): trả về true nếu thư mục tồn tại trên ổ đĩa hiện thời . 9- boolean createNewFile() throws IOException : Tạo một tệp mới và rỗng . 10- boolean mkdir() và boolean mkdirs(): Tạo ra các đường dẫn được xác định trong đối tượng của File . 11- boolean renameTo(File dest): Hàm đổi tên tệp hiện thời . 12- boolean delete(): Hàm xóa tệp hiện thời . 13- String[] list(): Hiển thị danh sách các tệp ở thư mục hiện thời CT801 5 III. Các luồng I/O xử lý theo byte Các lớp trừu tượng Inputstream và OutputStream là hai lớp gốc của hai nhánh trong cây phân cấp có thứ bậc theo quan hệ kế thừa,làm cơ sở để xây dựng những lớp con cháu làm nhiệm vụ đọc và ghi từng byte lên tệp . 1-Đọc từng byte lên tệp: int read() throws IOException int read(byte[] b) throws IOException int read(byte[] b, int off, int len) throws IOException 2-Ghi từng byte lên tệp: void write(int b) throws IOException void write(byte[] b) throws IOException void write(byte[] b, int off, int len) throws IOException //ghi mảng b gồm len byte kể từ vị trí off 3-Đóng tệp: void close() throws IOException void flush() throws IOException CT801 6 IV.Các lớp xử lý tệp. 1.Các lớp định nghĩa luồng byte vào/ ra cho các tệp : Lớp FileInputStream, FileOutputStream . Toán tử tạo lập : FileInputStream(String name) throws FileNotFoundedException FileInputStream(File file) throws FileNotFoundedException Tạo ra một tệp có tên name ,một đối tượng tệp file để đọc từng byte từ tệp(Nếu tệp này không tồn tại thì cho qua để xử lý theo từng ngữ cảnh) FileOutputStream(String name) throws FileNotFoundedException FileOutputStream(File file) throws IOException Tạo ra một tệp có tên name ,một đối tượng tệp file để ghi từng byte lên tệp(Nếu tệp này không tồn tại thì tạo ra tệp mới ở trên thư mục hiện thời) 2-Các lớp đọc ghi dữ liệu nguyên thủy: Lớp DataInputStream,DataOutputStream Các giá trị nguyên thủy(Boolean,char,byte,short,int,long,float,double) sẽ được ghi lại vào tệp dưới dạng nhị phân thông qua hai giao diện DataInput và DataOutput CT801 7 2.1 Ghi giá trị nguyên thủy vào tệp dưới dạng nhị phân : 1. Tạo ra một đối tượng outFile của FileOutputStream: FileOutputStream outFile = new FileOutputStream(“primitives.data”); 2. Tạo ra một đối tượng của DataOutputStream để ghép với outFile: DataOutputStream outStream = new DataOutputStream(outFile); 3. Ghi giá trị nguyên thủy vào outStream: outStream.writeBoolean(true ); outStream.writeInt(41); // Ghi giá trị 41(kiểu int)vào outStream 2.2 Đọc dạng nhị phân của các giá trị nguyên thủy từ tệp : 1. Tạo ra một đối tượng inFile của FileInputStream: FileInputStream inFile = new FileInputStream(“primitives.data”); 2. Tạo ra một đối tượng của DataInputStream để ghép với inFile: DataInputStream inStream = new DataInputStream(outFile); 3. Ghi các giá trị nguyên thủy vào inStream: char c = inStream.readChar(); int i = inStream.readInt(); long l =inStream.readLong(); CT801 8 3 .Đọc ghi dữ liệu thông qua buffer : Lớp BufferedInputStream, BufferedOutputStream Hai lớp này đọc/ghi dữ liệu theo từng khối byte chứ không phải theo từng byte , chính vì vậy tốc độ thực hiện sẽ nhanh hơn . - Để ghi theo buffer các byte chúng ta phải tạo ra biến tệp outBuffer: FileOutputStream outFile = new FileOutputStream(“primitives.data”); BufferedOutputStream outBuffer = new BufferedOutputStream(outFile); DataOutputStream outStream = new DataOutputStream(outBuffer); - Để đọc theo buffer các byte chúng ta phải tạo ra biến tệp inBuffer: FileInputStream inFile = new FileInputStream(“primitives.data”); BufferedInputStream inBuffer = new BufferedInputStream(outFile); DataInputStream inStream = new DataInputStream(outBuffer); Cũng sử dụng các hàm read và write để đọc ghi các giá trị kiểu nguyên thủy từ inStream. CT801 9 V.Truy nhập tệp ngẫu nhiên . - Lớp RandomAccessFile cho phép truy cập trực tiếp (ngẫu nhiên )vào các tệp,nghĩa là có thể đọc ghi các byte ở bất cứ vị trí nào trong tệp - Một tệp muốn được truy nhập ngẫu nhiên thì phải đc tạo lập và gán cho biến tệp tương ứng. RandomAccessFile(String name, String mode) throws IOException RandomAccessFile(File file, String mode) throws IOException Tệp đc xác định bởi tên name hoặc bởi đối tượng File . Đối số mode nhận các giá trị “r” để đọc “rw” để đọc và ghi long getFilePointter() throws IOException Cho vị trí hiện thời của con trỏ tệp long length() throws IOException Cho lại số byte của con trỏ tệp void seek(long offset) throws IOException Chuyển con trỏ tệp tới vị trị offset kể từ vị trí đầu tệp. void close() throws IOException Đóng tệp khi không còn sử dụng nữa CT801 10 Chạy chương trình . 2-Các lớp được sử dụng: - FileInputStream (Lớp đọc dữ liệu từ tệp) - FileOutputStream (Lớp ghi dữ liệu lên tệp) - RandomAccessFile. (Truy cập ngẫu nhiên vào. dung báo cáo I.Giới thiệu về lớp File . IV.Các lớp xử lý tệp. II. Một số hàm được sử dụng trong lớp File . V .Truy nhập tệp ngẫu nhiên . III. Các luồng I/O