Ứng dụng tiện ích nhỏ của tôi yêu cầu người dùng tạo thư mục đầu ra thông qua bộ chọn tệp GUI. Sau đó, nó tạo ra rất nhiều tệp trong thư mục đầu ra này sau khi xử lý một số.Kiểm tra quyền truy cập ghi trong thư mục trước khi tạo tệp bên trong thư mục
Tôi cần phải kiểm tra xem ứng dụng có quyền ghi để nó thông báo cho người sử dụng và không không tiếp tục với quá trình xử lý (mà có thể mất một thời gian dài)
nỗ lực đầu tiên của tôi là canWrite() phương thức java.io.File. Nhưng điều này không hoạt động vì nó tương ứng với mục nhập thư mục chứ không phải nội dung của nó. Tôi đã thấy ít nhất một phiên bản của thư mục Windows XP có thể được đổi tên hoặc xóa nhưng không thể tạo tệp trong đó (vì quyền). Đây thực sự là testcase của tôi.
cuối cùng tôi giải quyết với các giải pháp sau đây
//User places the input file in a directory and selects it from the GUI
//All output files will be created in the directory that contains the input file
File fileBrowse = chooser.getSelectedFile(); //chooser is a JFileChooser
File sample = new File(fileBrowse.getParent(),"empty.txt");
try
{
/*
* Create and delete a dummy file in order to check file permissions. Maybe
* there is a safer way for this check.
*/
sample.createNewFile();
sample.delete();
}
catch(IOException e)
{
//Error message shown to user. Operation is aborted
}
Tuy nhiên điều này không cảm thấy tao nhã với tôi vì nó chỉ cố gắng để thực sự tạo ra một tập tin và kiểm tra xem các hoạt động thành công.
Tôi nghi ngờ rằng phải có một cách tốt hơn cho điều này nhưng tất cả các giải pháp tôi đã tìm thấy cho đến nay với Người quản lý bảo mật và nội dung xử lý với Java Applet chứ không phải ứng dụng độc lập. Tôi có thiếu gì đó không?
Cách được khuyến nghị để kiểm tra quyền truy cập tệp trong thư mục trước khi thực sự ghi tệp là gì?
Tôi đang sử dụng Java 5.
Điều gì xảy ra nếu "empty.txt" đã tồn tại? Sau đó, bạn sẽ xóa một tệp có thể quan trọng. –
Có thể tốt nhất nếu boolean trả về bởi createNewFile() được sử dụng để hiểu xem tệp đó có thực sự được tạo ra không. – kazanaki