Tôi có một tệp mà từ đó tôi đã loại bỏ mọi quyền. Không ai có thể đọc được tập tin, đúng không? Trong thực tế, nếu tôi chạyJava - file.length() trả về ngay cả khi tệp không đọc được
File f = new File("not_readable.pdf");
System.out.println(f.canRead())
tôi nhận được
false
Tuy nhiên, nếu tôi gọi
File f = new File("not_readable.pdf");
System.out.println(f.length())
tôi nhận được
455074
Đó là sự hiểu biết của tôi rằng để để có được kích thước của một tập tin phải mở và đọc thứ e tệp đầu tiên, nhưng kết quả này cho thấy rằng tôi sai. Có ai biết tại sao điều này xảy ra không? Ngoài ra, có cách nào để ngăn chặn phương thức file.length() của Java truy cập kích thước của một tệp không?
Tôi đang sử dụng Ubuntu 12.10
Hệ thống tệp ext * có lưu kích thước không? Hãy thử tập tin này: 'cat/dev/urandom>; chmod 000 tập tin; ls -sh tập tin; 'Tôi có thể sai, nhưng tôi khá chắc chắn' ls' có thể đọc kích thước tập tin ngay cả khi quyền là số không. – BenjiWiebe
Tại sao bạn phải mở tệp để có độ dài? Điều đó sẽ được lưu trữ trong thông tin thư mục trong hệ thống tệp. – OldProgrammer