- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要检查特定目录的文件创建权限。
我试过:
thử {
AccessController.checkPermission(new FilePermission("directory_path", "write"));
// Have permission
} catch (SecurityException e) {
// Doesn't have permission
}
...但这总是抛出 SecurityException(据我所知,这检查的不是底层 fs 权限,而是一些应该明确配置的 JVM 设置)。
另一种可能的方法是使用这样的东西:
File f = new File("directory_path");
if(f.canWrite()) {
// Have permission
} khác {
// Doesn't have permission
}
... 但是即使我无法在指定目录中创建文件,这也会返回 true(例如,当我在没有管理员权限的用户下运行我的应用程序时,我无法在“c:\”中创建文件,但 f.canWrite() 返回是的)。
最后我做了类似这样的破解:
File f = new File("directory_path");
thử {
File.createTempFile("check", null, f).delete();
// Have permission
} bắt (IOException e) {
// Doesn't have permission
}
...但这可能只是一个临时解决方案,因为我需要为客户端 fs 上的几乎所有文件夹获得此类权限。
有谁知道如何很好地获得真正的文件创建权限,而不会导致上述性能问题和黑客攻击?
câu trả lời hay nhất
测试任何资源的可用性/可用性的最佳方法是尝试使用它。在这种情况下,new FileOutputStream(new File(dir, name))
。如果目录不可写,或者文件已经存在且不可写等等,它将抛出 Ngoại lệ IO
。当您执行该代码时,操作系统已经必须进行所有这些检查:尝试全部复制是没有意义的,即使你 100% 正确,这是不可能的,你仍然引入了一个计时窗口,在这个窗口中,由于异步 Activity ,先前的“真”条件可能会变成“假” .无论如何,您必须从文件创建中捕获异常,并在 catch block 中编写代码来处理它们:为什么要写两次?
关于java - 在java中检查文件创建权限的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7386477/
Lời nói đầu: Đôi khi, một cơ sở dữ liệu có nhiều tài khoản, bao gồm quản trị viên cơ sở dữ liệu, nhà phát triển, nhân viên hỗ trợ vận hành và bảo trì, v.v. Có thể có nhiều tài khoản có quyền tương đối lớn, chẳng hạn như quyền vận hành DDL (tạo, sửa đổi, xóa các thủ tục được lưu trữ, Tạo, sửa đổi, xóa bảng, v.v.), nếu bạn có nhiều tài khoản, hãy quản lý
Vì vậy, tôi đã tạo và thiết lập một ứng dụng React lớn bằng cách sử dụng Tạo ứng dụng React. Gần đây, chúng tôi bắt đầu sử dụng Storybook để làm việc và tạo các thành phần. Thật tuyệt vời. Tuy nhiên, khi cố gắng chạy hoặc xây dựng ứng dụng, chúng tôi liên tục gặp phải
Làm theo đoạn mã cho điều khiển mà tôi đang tạo. Điều khiển này được sử dụng ở những nơi khác nhau và có các biến khác nhau. Tôi đang cố gắng viết một lệnh để dọn sạch mã của mình nhưng tôi gặp phải lỗi phân tích cú pháp khi chèn các giá trị gần {{}}. Mới sử dụng Angular và không chắc mình đang thiếu gì. Xin hãy giúp đỡ.
Tôi đang cố gắng tạo một lớp nhà cung cấp hình ảnh/jpeg jax-rs để tạo hình ảnh cho dịch vụ web dựa trên phần còn lại bài đăng của tôi. Tôi không thể đưa ra yêu cầu kiểm tra những điều sau đây, cách dễ nhất để kiểm tra nó là gì? @BƯU KIỆN
Tôi đã thực hành c trong trình giả lập của Windows 10. Sau này tôi chuyển sang dev C++ IDE. Khi tôi sử dụng FILE trong C. Tệp được tạo có tên là test.txt và tôi đã đặt tên khác. Xin hãy giúp giải quyết nó. dưới
Khi tạo Chế độ xem tùy chỉnh, chúng tôi đặt chủ sở hữu của tệp Chế độ xem thành lớp tùy chỉnh và khởi tạo nó bằng initWithFrame hoặc initWithCode. Khi chúng tôi tạo customUITable
Tôi đang cố gắng tạo một chuỗi cho hàm *Producer nhưng dòng được sử dụng để tạo chuỗi hiển thị lỗi. Tôi đã đánh dấu sao câu này nhưng tôi không hiểu nó có gì sai... #include #include #include
Hôm nay, khi thực hiện một dự án, tôi đã gặp phải một tình huống cần tạo một đối tượng JavaScript. Vì vậy, tôi Bing một bài viết của một người nước ngoài về ba cách để tạo các đối tượng JavaScript và sau đó gõ mã sau khi đọc nó. Mình thấy phương pháp này khá hay nên muốn chia sẻ với các bạn ở đây. &
Tôi đang đọc tài liệu về cách chuyển chuỗi truy vấn tới S3 của Amazon để xác thực nhưng dường như không hiểu cách StringToSign được tạo và sử dụng. Tôi đang tìm một ví dụ cụ thể để minh họa (1) cách xây dựng Chuỗi
Lời nói đầu: Tôi không biết nhiều về cách triển khai cơ bản các tác vụ trong C#, chỉ biết cách sử dụng chúng. Xin lỗi vì bất cứ điều gì tôi đã nêu dưới đây: Tôi không thể tìm thấy câu trả lời hay cho câu hỏi "Làm cách nào tôi có thể bắt đầu một nhiệm vụ mà không chờ đợi nó?" Trong C#. Cụ thể hơn, ngay cả khi có
Tôi có ILookup được tạo bởi một số biểu thức phức tạp. Giả sử đây là tìm người theo họ. (Trong mô hình thế giới đơn giản của chúng tôi, họ là duy nhất trong các gia đình) ILookup gia đình Bây giờ tôi có hai truy vấn mà tôi quan tâm đến cách xây dựng. cái đầu
Tôi đang cố gắng tạo một MSI có chứa và exe. Tùy chọn gói được sử dụng trong WIX. Đã xảy ra lỗi khi thực hiện việc này. Ai đó có thể giúp tôi giải quyết vấn đề này. Đây là mã: lỗi lỗi LGH
Trong Yii, Tạo và Cập nhật thường sử dụng cùng một hình thức. Vì vậy, nếu tôi có các trường như email, mật khẩu, ...other_fields... v.v. trong quá trình tạo, nhưng tôi không muốn hiển thị cụ thể các trường email và mật khẩu trong khi cập nhật, nhưng
Tuần trước tôi đã gặp khó khăn với việc tạo QModelIndex cho một hàng và một cột. Ngoài ra, tôi sẽ sẵn lòng thay đổi giá trị của row() trong QModelIndex đã tồn tại. Bất kỳ trợ giúp sẽ được đánh giá rất cao. Biên tập viên: QModelInd
Vì lý do nào đó, điều này không hoạt động: const char * str_reset_command = "\r\nReset"; const char * str_config_command = "\r\nC
Bây giờ, tôi có data.frame sau được tạo bởi original.df %.% group_by(Category) %.% tally() %% sắp xếp(desc(n)) . DF 5),
Trước ngày hôm nay, tôi đã sử dụng /etc/vim/vimrc để định cấu hình cài đặt vim của mình. Hôm nay, tôi nghĩ đến việc tạo một tệp .vimrc. Vì vậy, tôi sử dụng touch .vimrc cat /etc/vim/vimrc > .vimrc vậy
Tôi có thể tạo MKAnnotation không, hay nó chỉ ở chế độ đọc? Tôi có tọa độ nhưng tôi không thấy dễ dàng khi tạo MKAnnotation theo cách thủ công bằng setCooper. ý tưởng? Câu trả lời hay nhấtMKChú thích
Trong đoạn mã sau, câu lệnh nhật ký đầu tiên hiển thị số thập phân như mong đợi, nhưng câu lệnh nhật ký thứ hai lại ghi bằng NULL. Tôi đã làm gì sai? NSDictionary *entry = [[NSDictionary alloc] initWithOb
Tôi đang sử dụng mã tương tự như thế này để tự động thêm vào một mảng; $arrayF[$f+1][$y][$x+1] = $value+1; phần bù không xác định: 1 Câu hỏi: Hãy thử tạo
Tôi là một lập trình viên xuất sắc, rất giỏi!