【发布时间】:2012-12-26 17:33:09
【问题描述】:
我有一个文件,我从该文件中禁止了所有权限。应该没有人能够读取文件,对吧?事实上,如果我运行
File f = new File("not_readable.pdf");
System.out.println(f.canRead())
我明白了
false
但是,如果我打电话
File f = new File("not_readable.pdf");
System.out.println(f.length())
我明白了
455074
我的理解是,为了获得文件的大小,必须先打开并读取文件,但这个结果强烈表明我错了。有谁知道为什么会这样?另外,有没有办法阻止Java的file.length()方法访问文件的大小?
我使用的是 Ubuntu 12.10
【问题讨论】:
-
ext* 文件系统是否保存大小?试试这个:
cat /dev/urandom > file; chmod 000 file; ls -sh file;我可能错了,但我很确定ls即使权限为零也可以读取文件大小。 -
为什么必须打开文件才能得到长度?这将存储在文件系统的目录信息中。
标签: java linux operating-system filesystems ubuntu-12.10