Tạo Thư Mục
(Creating Directory)
Trong Java, việc tạo thư mục là một thao tác quan trọng khi làm việc với hệ thống tệp. Lớp Files trong gói java.nio.file cung cấp các phương thức tiện lợi để tạo thư mục mới, bao gồm cả thư mục đơn, thư mục nhiều cấp và thư mục tạm thời. Việc hiểu cách tạo và quản lý thư mục sẽ giúp bạn tổ chức dữ liệu hiệu quả hơn trong các ứng dụng Java.
(1) Tạo thư mục mới (Creating a Directory)
Bạn có thể tạo một thư mục mới bằng cách sử dụng phương thức createDirectory(Path, FileAttribute<?>). Nếu không chỉ định các thuộc tính, thư mục mới sẽ có các thuộc tính mặc định. Ví dụ:
Ví dụ: Example.java
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Example {
public static void main(String[] args) {
// Đường dẫn của thư mục mới
Path dir = Paths.get("newDirectory");
try {
// Tạo thư mục mới với các thuộc tính mặc định
Files.createDirectory(dir);
// In ra thông báo xác nhận
System.out.println("Thư mục mới đã được tạo: " + dir);
} catch (IOException e) {
// Xử lý ngoại lệ nếu xảy ra lỗi
System.err.println("Lỗi khi tạo thư mục: " + e.getMessage());
}
}
}
Kết quả của chương trình là:
Ví dụ mã sau đây tạo một thư mục mới trên hệ thống tệp POSIX với các quyền cụ thể:
Ví dụ
// Đường dẫn của thư mục mới
Path dir = Paths.get("newDirectory");
// Đặt quyền cho thư mục (rwxr-x---)
Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rwxr-x---");
FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions.asFileAttribute(perms);
try {
// Tạo thư mục mới với quyền cụ thể
Files.createDirectory(dir, attr);
// In ra thông báo xác nhận
System.out.println("Thư mục mới với quyền đã được tạo: " + dir);
} catch (IOException e) {
// Xử lý ngoại lệ nếu xảy ra lỗi
System.err.println("Lỗi khi tạo thư mục: " + e.getMessage());
}
Quyền truy cập vào file trong hệ thống Unix-like thường được biểu diễn bằng một chuỗi gồm 9 ký tự, chia thành 3 nhóm, mỗi nhóm gồm 3 ký tự.
↳ Nhóm thứ nhất: Áp dụng cho chủ sở hữu của file.
↳ Nhóm thứ hai: Áp dụng cho nhóm người dùng mà file thuộc về.
↳ Nhóm thứ ba: Áp dụng cho tất cả người dùng khác.
Mỗi ký tự trong một nhóm đại diện cho một quyền:
↳ r - Quyền đọc (read): Cho phép đọc nội dung của file.
↳ w - Quyền ghi (write): Cho phép sửa đổi nội dung của file.
↳ x - Quyền thực thi (execute):
↳ Đối với file: Cho phép thực thi file (nếu là file thực thi).
↳ Đối với thư mục: Cho phép truy cập vào thư mục (tức là liệt kê các file con).
↳ -: Không có quyền.
Ví dụ: rwxr-x---
↳ Chủ sở hữu: Có quyền đọc, ghi và thực thi.
↳ Nhóm: Có quyền đọc và thực thi.
↳ Người khác:Không có quyền truy cập.
Các thuộc tính này chủ yếu được sử dụng trên hệ thống tệp POSIX như Linux và macOS. Trên Windows, bạn không thể thiết lập các quyền POSIX cho thư mục.
(2) Tạo các thư mục nhiều cấp (Creating Multiple Levels of Directories)
Để tạo một thư mục nhiều cấp khi một hoặc nhiều thư mục cha có thể chưa tồn tại, bạn có thể sử dụng phương thức tiện lợi createDirectories(Path, FileAttribute<?>). Cũng giống như phương thức createDirectory(Path, FileAttribute<?>), bạn có thể chỉ định một tập hợp các thuộc tính tệp ban đầu tùy chọn. Ví dụ mã sau đây sử dụng các thuộc tính mặc định:
Ví dụ: Example.java
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Example {
public static void main(String[] args) {
// Đường dẫn của thư mục cần tạo
Path dirPath = Paths.get("Exemple/Exemple1/Exemple2");
try {
// Tạo các thư mục nhiều cấp
Files.createDirectories(dirPath);
// In ra thông báo xác nhận
System.out.println("Các thư mục đã được tạo: " + dirPath);
} catch (IOException e) {
// Xử lý ngoại lệ nếu xảy ra lỗi
System.err.println("Lỗi khi tạo các thư mục: " + e.getMessage());
}
}
}
Kết quả của chương trình là:
Các thư mục được tạo từ trên xuống dưới. Trong ví dụ Exemple/ Exemple 1/ Exemple2, nếu thư mục Exemple chưa tồn tại, nó sẽ được tạo. Tiếp theo, thư mục Exemple1 được tạo nếu cần, và cuối cùng, thư mục Exemple2 được tạo.
Lưu ý: rằng phương thức này có thể thất bại sau khi tạo một số thư mục cha nhưng chưa tạo hết.
(3) Tạo thư mục tạm thời (Creating a Temporary Directory)
Bạn có thể tạo một thư mục tạm thời bằng cách sử dụng một trong các phương thức createTempDirectory:
↳ createTempDirectory(Path, String, FileAttribute<?>...)
↳ createTempDirectory(String, FileAttribute<?>...)
Phương thức đầu tiên cho phép bạn chỉ định vị trí của thư mục tạm thời, và phương thức thứ hai tạo một thư mục mới trong thư mục tệp tạm thời mặc định. Dưới đây là ví dụ mã Java về việc tạo một thư mục tạm thời.
Ví dụ: Example.java
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class Example {
public static void main(String[] args) {
try {
// Tạo thư mục tạm thời với tiền tố "myapp-" và không có thuộc tính tùy chọn
Path tempDir = Files.createTempDirectory("myapp-");
System.out.format("Thư mục tạm thời đã được tạo: %s%n", tempDir);
} catch (IOException e) {
System.err.format("Lỗi khi tạo thư mục tạm thời: %s%n", e.getMessage());
}
}
}
Kết quả của chương trình là:
Hy vọng rằng qua các ví dụ trên, bạn sẽ hiểu rõ hơn về cách tạo thư mục trong Java.