Java检查文件的可读性
文件操作是相当平台依赖性。尽管Java编程语言是跨平台的,文件运行在Java is also平台依赖性。the obvious evidence is the file权限检查。在Java,我们可以叫canread(),()和()canwrite canexecutable to check whether the program can read,write or执行指定的文件。然而,我们的Windows,当我们说canread()我们队列对象,我们可以得到意想不到的结果。
实际上,我们的Windows,当我们说canread()我们队列对象,我们将永远get the true returned Even if we have access to the file Denied the读。There is also a bug for this和它仍然不是固定的。细节can be found here the bug。我们可以使用下面的代码:
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; public class FilePermissionTest{ public static void main(String args[]){ try{ File file=new File("test.txt"); System.out.println("Can read : "+file.canRead()); FileInputStream input=new FileInputStream(file); }catch(FileNotFoundException ex){ ex.printStackTrace(); } } }运行错误结果
Can read : true
java.io.FileNotFoundException: test.txt (Access is denied)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(FileInputStream.java:106)
at FilePermissionTest.main(FilePermissionTest.java:11)
从输出中,我们不难发现,canread()返回true当我们创建在FileInputStream对象,我们可以拒绝访问错误。
有什么办法可以解决这个问题在Windows?是的,从Java 7开始,我们有java.nio.file包和java.nio.file.files类,这应该是如果你想拥有你想操作文件更多的控制。
现在我们有代码:
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.nio.file.Files; import java.nio.file.FileSystems; public class FilePermissionTest{ public static void main(String args[]){ try{ File file=new File("test.txt"); System.out.println("Can read : "+file.canRead()); System.out.println("Is readable : "+Files.isReadable(FileSystems.getDefault().getPath(file.getAbsolutePath()))); FileInputStream input=new FileInputStream(file); }catch(FileNotFoundException ex){ ex.printStackTrace(); } } }
输出结果:
Can read : true
Is readable : false
java.io.FileNotFoundException: test.txt (Access is denied)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(FileInputStream.java:146)
at FilePermissionTest.main(FilePermissionTest.java:15)
从输出中我们可以看到文件isreadable()返回正确的值。
顺便说一下,如果你打电话给setreadable()对一个文件对象,你可能会失望的。
原英文地址:Check file readability in Java相关文章
最新发布
阅读排行
热门文章
猜你喜欢