J'ai un fichier à partir duquel j'ai supprimé toutes les permissions. Personne ne devrait être capable de lire le fichier, n'est-ce pas? En fait, si je lanceJava - file.length() renvoie même si le fichier n'est pas lisible
File f = new File("not_readable.pdf");
System.out.println(f.canRead())
Je reçois
false
Cependant, si je l'appelle
File f = new File("not_readable.pdf");
System.out.println(f.length())
Je reçois
455074
Je crois comprendre que, pour obtenir la taille d'un fichier, il faut ouvrir et lire le Le dossier d'abord, mais ce résultat suggère fortement que j'ai tort. Est-ce que quelqu'un sait pourquoi cela se produit? De même, existe-t-il un moyen d'empêcher la méthode file.length() de Java d'accéder à la taille d'un fichier?
J'utilise Ubuntu 12.10
Le système de fichiers ext * enregistre-t-il la taille? Essayez ceci: 'cat/dev/urandom> fichier; chmod 000 fichier; ls -sh fichier; 'Je peux me tromper, mais je suis certain que' ls' peut lire la taille du fichier même si les permissions sont nulles. – BenjiWiebe
Pourquoi devez-vous ouvrir le fichier pour obtenir la longueur? Cela serait stocké dans les informations du répertoire dans le système de fichiers. – OldProgrammer