- 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 25: Thao tác với tệp và thư mục trong Java - Lập trình Java cơ bản
Đăng bởi: Admin | Lượt xem: 3624 | Chuyên mục: Java
Lớp java.io.File cung cấp rất nhiều các phương thức hữu ích để làm việc với cái tệp và thư mục. Sau đây, chúng ta sẽ cùng nhau tìm hiểu cách tạo, đổi tên, sao chép, xóa, cập nhật,.. của một tệp hoặc thư mục.
1. Tạo tệp rỗng
Sử dụng phương thức createNewFile () trên một đối tượng File để tạo một tệp rỗng mới. Phương thức này trả về true nếu tệp được tạo thành công và trả về false nếu tệp đã tồn tại.
package com.company;
import java.io.*;
public class Main {
public static void main(String args[]) throws IOException {
File file = new File("E:/bkitsoftware/demo.txt");
//Tạo file với đường dẫn E:/bkitsoftware/demo.txt
file.createNewFile();
}
}
Nếu tệp đã tồn tại, thì sẽ không tạo tệp khác đè lên tệp cũ.
2. Tạo tệp tạm thời
Sử dụng phương thức createTempFile () để tạo một tệp tạm thời File tạm có thể xem như là rác của các thiết bị nếu các chương trình sinh ra mà không tự xóa đi. Khi đó bạn sẽ phải dùng các chương trình dọn dẹp để xóa các file đó ra khỏi máy, giảm bớt dung lượng lưu trữ vô ích.
package com.company;
import java.io.*;
public class Main {
public static void main(String args[]) throws IOException {
File tempFile = File.createTempFile("vnCoder", ".log");
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
writer.write("I love BkitSoftware");
writer.close();
FileInputStream fis = new FileInputStream(tempFile);
int i = -1;
while ((i = fis.read()) != -1) {
System.out.print((char) i);
}
tempFile.deleteOnExit();
}
}
I love BkitSoftware
3. Tạo thư mục
Sử dụng phương thức mkdir () để tạo một thư mục. Phương thức này trả về true nếu thư mục đã được tạo và ngược lại, Nếu thư mục đã tồn tại, thì không tạo thư mục khác đè lên thư mục cũ
package com.company;
import java.io.*;
public class Main {
public static void main(String args[]) throws IOException {
File newDir = new File("E:/bkitsoftware/vnCoder");
if (newDir.mkdir()) {
System.out.println("Directory created");
} else {
System.out.println("Directory not created");
}
}
}
Directory created // Khi chạy lần 1
_________________________________________
Directory not created // Khi chạy lần 2
Khi tạo thư mục, Java sẽ tự động tạo các thư mục chưa tồn tại trong đường link nhập vào (cho phép tạo các thư mục lồng nhau).
4. Liệt kê nội dung của một thư mục
Sử dụng phương thức list() để liệt kê nội dung của một thư mục. Phương thức này trả về một mảng các tên tệp và thư mục trong thư mục đã chỉ định.
package com.company;
import java.io.*;
public class Main {
public static void main(String args[]) throws IOException {
File newDir = new File("E:/bkitsoftware/vnCoder");
String[] str = newDir.list();
for (String s:str){
System.out.println(s);
}
}
}
Kết quả thu được:
demo.txt
folder1
5. Đổi tên tệp hoặc thư mục:
Sử dụng phương thức renameTo (Tệp) để đổi tên tệp hoặc thư mục. Phương thức sẽ trả về true nếu tệp / thư mục bị đổi tên hoặc false nếu không (ví dụ: tệp / thư mục gốc không tồn tại). Ví dụ:
File oldName = new File("OldBkitLogo.png");
File newName = new File("NewBkitLogo.png");
boolean renamed = oldName.renameTo(newName);
if (renamed) {
System.out.println("The file was renamed");
} else {
System.out.println("Could not rename");
}
Chuyển tệp OldBkitLogo.png thành NewBkitLogo.png.
6. Xóa một tệp hoặc thư mục
Sử dụng phương thức delete() để xóa tệp hoặc thư mục. Phương thức sẽ trả về true nếu tệp / thư mục bị xóa hoặc false nếu không (ví dụ: tệp / thư mục gốc không tồn tại). Ví dụ:
File file = new File("CodeJavaLogoSmall.png");
if (file.delete()) {
System.out.println("The file was deleted");
} else {
System.out.println("Could not delete the file");
}
Để xóa một thư mục không rỗng, bạn phải xóa tất cả các tệp và thư mục con trong đó.
Bạn có thể gọi phương thức removeOnExit () để báo cho Máy ảo Java xóa tệp khi chương trình kết thúc và JVM kết thúc. Điều này rất hữu ích để xóa các tệp tạm thời được sử dụng khi chạy chương trình.
7. Sao chép một tệp
Bạn có thể sử dụng BufferedInputStream và BufferedOutputStream để có thể sao chép tệp:
try (
        BufferedInputStream inputStream
            = new BufferedInputStream(new FileInputStream(inputFile));
 
        BufferedOutputStream outputStream
            = new BufferedOutputStream(new FileOutputStream(outputFile));
) {
 
    int byteRead;
 
    while ((byteRead = inputStream.read()) != -1) {
    outputStream.write(byteRead);
    }
} catch (IOException ex) {
    ex.printStackTrace();
}
Tuy nhiên, đoạn mã trên không hiệu quả. Thay vào đó, bạn có thể sử dụng FileChannel trong gói java.nio.channels để sao chép tệp hiệu quả hơn. Phương thức sau đây sao chép tệp nguồn vào đích bằng FileChannel :
public static void copyFile(File sourceFile, File destFile) {
try (
FileChannel sourceChannel = new FileInputStream(sourceFile).getChannel();
FileChannel destChannel = new FileOutputStream(destFile).getChannel();
) {
sourceChannel.transferTo(0, sourceChannel.size(), destChannel);
} catch (IOException ex) {
System.err.println(ex.getMessage());
}
}
Như vậy, mình đã giới thiệu đến các bạn những thao tác cơ bản đối với tệp và thư mục trong Java. Cảm ơn các bạn đã đọc.
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