Tôi mới sử dụng Java. Nơi umask tiếp xúc trong api?Làm cách nào để đặt umask từ bên trong java?
Trả lời
Bạn không thể nói chuyện trực tiếp với umask, vì Java là một trừu tượng và umask là thực thi POSIX cụ thể. Nhưng bạn có API sau:
File f;
f.setExecutable(true);
f.setReadable(false);
f.setWritable(true);
Có một số API khác, check the docs.
Nếu bạn phải có quyền truy cập trực tiếp đến umask, hoặc làm điều đó thông qua JNI và chmod()
syscall, hoặc đẻ trứng một quá trình mới với exec("chmod")
.
java.nio.file.attribute.PosixFileAttributes
trong Java SE 7.
Tôi không tìm thấy bất kỳ chức năng nào để cài đặt umask cụ thể, chỉ cho phép các tập tin. – Nakedible
@Nakedible Yes. –
phương pháp khác là sử dụng một thư viện Java của bên thứ 3 đó cho thấy nhiều POSIX cuộc gọi hệ thống; ví dụ.
- Jtux
- Thư viện "Posix for Java",
- và vân vân (Google cho "thư viện posix java").
Vấn đề với phương pháp này là bản chất không di động (không hoạt động trên nền tảng tuân thủ không POSIX) và yêu cầu thư viện gốc cụ thể cho nền tảng ... và tất cả những gì đòi hỏi.
Hm thú vị, cảm ơn. Tôi đoán tôi có thể sử dụng JNI để gọi umask (2), sau đó? – eeee
@eeee chắc chắn, nhưng bạn phải triển khai mô-đun JNI của mình cho tất cả các nền tảng bạn muốn hỗ trợ, vì nó gần như phụ thuộc vào nền tảng định nghĩa. – extraneon
@extraneon có, tất nhiên. Thành thật mà nói, tôi rất ngạc nhiên khi không có ai tạo ra một mô-đun cho Java phơi bày tất cả các giao diện posix. Ý tôi là, điều đó không thể đúng - đúng không? Làm thế nào để mọi người thực hiện các hoạt động hệ thống trong java mà không có loại điều này? – eeee