在Windows中,文件可能不可写,因为用户根本无权修改文件,这是由于“访问控制列表”权限,或者仅仅是因为文件设置了只读属性。
我的应用程序是用Java编写的,这些条件中的任何一个都可能导致Files.isWritable(file)失败,但是如何确定哪个条件导致失败,具体而言,我只想知道是否设置了只读属性。
我注意到有一个File.setReadOnly()方法(以及File.setWritable()),我假设在Windows上,这只是设置属性,但似乎不是一个File.isReadOnly()方法。
如何创build具有授予所有人的所有权限的目录
我如何强制Java Web Start运行自签名的JNLP?
ATA在Linux中受信任的命令
在Win2K / XP中检查目录的写入权限的代码
htaccess pcfg_openfile:无法检查htaccess文件,确保它是可读的,并且'/files/domain.com/public_html/images/'是可执行的
如何validation域凭证而不考虑caching域凭证
什么是在OpenShift中运行Nginx docker容器的正确方法?
使用VC ++在Windows上保护虚拟磁盘
在Windows下的桌面之间共享剪贴板?
使用canWrite()方法:
if(file.canWrite()) { System.out.println("you can write"); } else { System.out.println("you cannot write"); }
有用的信息:
返回 :当且仅当文件系统实际包含由此抽象路径名表示的文件并允许应用程序写入文件时才返回 true; 否则为假。
抛出 :SecurityException – 如果安全管理器存在并且其SecurityManager.checkWrite(java.lang.String)方法拒绝对该文件的写入访问
我使用这种方法来检查是否只读,(它使用自定义方法平台.ifWindows()只能在Windows上运行,但你可以使用替代品)。
private boolean isReadOnlyFile(Path file) { if(Platform.isWindows()) { if (!file.toFile().canWrite()) { DosFileAttributes dosAttr; try { dosAttr = Files.readAttributes(file,DosFileAttributes.class); if(dosAttr.isReadOnly()) { return true; } } catch (IOException e) { } } } return false; }
别。 试着打开文件输出。 如果不可写,则会失败。 抓住异常,然后处理它。 不要试图预测未来。 你可以测试它是错误的,或者它可以在测试和使用之间变化,两种方式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。