我有一个文件,从中我已经禁止了所有权限。没有人应该能够读取文件,对吧?事实上,如果我跑Java - file.length()即使文件不可读也会返回
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
这是我的理解是,为了获得文件大小必须打开并阅读e文件,但这个结果强烈表明我错了。有谁知道为什么发生这种情况?另外,有没有办法阻止Java的file.length()方法访问文件的大小?
我使用Ubuntu 12.10
ext *文件系统保存大小吗?试试这个:'cat/dev/urandom> file; chmod 000文件; ls -sh文件;'我可能是错的,但我很确定'即使权限为零,ls'也可以读取文件大小。 – BenjiWiebe
为什么你必须打开文件才能获得长度?这将被存储在文件系统中的目录信息中。 – OldProgrammer