Java SecurityManager checkWrite()方法与示例
语法:
public void checkWrite(FileDescriptor file_des); public void checkWrite(String fi);
SecurityManager类checkWrite()
方法
checkWrite()方法在java.lang包中可用。
checkWrite(FileDescriptorfile_des)方法使用RuntimePermission(“writeFileDescriptor”)调用checkPermission来写入给定的文件描述符。
checkWrite(Stringfi)方法使用FilePermission(fi,“write”)调用checkPermission以通过给定的fi参数写入文件。
checkWrite(FileDescriptorfile_des),checkWrite(Stringfi)方法在从不同媒体写入文件时可能会引发异常。
checkWrite(FileDescriptorfile_des):
SecurityException-如果不允许调用线程写入给定的文件描述符,则可能引发此异常。
NullPointerException-如果给定参数为null,则可能引发此异常。
checkWrite(Stringfi):
SecurityException-如果不允许调用线程写入给定文件,则可能引发此异常。
NullPointerException-如果给定参数为null,则可能引发此异常。
这些是非静态方法,只能通过类对象访问,如果尝试使用类名称访问这些方法,则会收到错误消息。
参数:
在第一种情况下,FileDescriptorfile_des-此参数表示特定于系统的文件描述符。
在第二种情况下,字符串fi-此参数表示系统特定的文件名。
返回值:
此方法的返回类型为void,不返回任何内容。
示例
//Java程序演示示例 //checkWrite()SecurityManager类的方法的说明 import java.security.*; import java.io.*; public class CheckWrite extends SecurityManager { public static void main(String[] args) { FileDescriptor file_desc = new FileDescriptor(); String fi = "getProperties().doc"; //通过使用setProperty()方法是设置策略属性 //与安全经理 System.setProperty("java.security.policy", "file:/C:/java.policy"); //实例化CheckWrite对象 CheckWrite cw = new CheckWrite(); //通过使用setSecurityManager()方法是设置 //安全经理 System.setSecurityManager(cw); //通过使用CheckWrite(FileDescriptor)方法是 //通过使用文件描述符检查写文件 cw.checkWrite(file_desc); //通过使用CheckWrite(String)方法是 //检查该写入文件 cw.checkWrite(fi); //显示消息 System.out.println("Accepted.."); } }
输出结果
Exception in thread "main" java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "writeFileDescriptor") at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) at java.base/java.security.AccessController.checkPermission(AccessController.java:897) at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:322) at java.base/java.lang.SecurityManager.checkWrite(SecurityManager.java:727) at CheckWrite.main(CheckWrite.java:25)