我创建了一个临时文件夹,然后尝试在Windows7计算机中更改其权限。我有管理员权限。
public class FilePermissionExample
{
public static void main( String[] args )
{
try {
File file = File.createTempFile("temp", Long.toString(System.nanoTime()));
file.delete();
file.mkdir();
if(file.exists()){
System.out.println("Is Execute allow : " + file.canExecute());
System.out.println("Is Write allow : " + file.canWrite());
System.out.println("Is Read allow : " + file.canRead());
}
file.setExecutable(false);
file.setReadable(false);
file.setWritable(false);
System.out.println("Is Execute allow : " + file.canExecute());
System.out.println("Is Write allow : " + file.canWrite());
System.out.println("Is Read allow : " + file.canRead());
if (file.createNewFile()){
System.out.println("File is created!");
}else{
System.out.println("File already exists.");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出:
是否允许执行:true
是否允许写入:true
读取允许:真
是否允许执行:true
是否允许写入:true
读取允许:真
文件已存在。
预期:
是否允许执行:true
是否允许写入:true
读取允许:真
是否允许执行:false
是否允许写入:false
是否允许读取:false
在windows中使用hiverunner编写配置单元测试时,我也遇到了类似的问题。有人能提些建议吗?
2条答案
按热度按时间xzv2uavs1#
如果要更改ntfs格式驱动器上的权限,则需要通过aclfileattributeview更改权限。
下面这个相当详细的代码片段显示了删除
write
许可authorized users
在给定的文件上。假设用户
jane
是文件的所有者fobar.bin
和用户john
有asauthorized user
写入权限。运行代码段之后john
无法再写入文件。输出示例(长行 Package )
许可
WRITE_DATA
已删除。velaa5lx2#
从api文档
java.io.File
:文件系统可能对实际文件系统对象的某些操作实施限制,如读、写和执行。这些限制统称为访问权限。文件系统可能对单个对象具有多组访问权限。例如,一个集合可以应用于对象的所有者,另一个集合可以应用于所有其他用户。对象的访问权限可能会导致此类中的某些方法失败。“
所以你的操作系统不允许更改权限。