Ho un file dal quale ho soppresso ogni autorizzazione. Nessuno dovrebbe essere in grado di leggere il file, giusto? In realtà, se corroJava - file.length() restituisce anche se il file non è leggibile
File f = new File("not_readable.pdf");
System.out.println(f.canRead())
ottengo
false
Tuttavia, se chiamo
File f = new File("not_readable.pdf");
System.out.println(f.length())
ottengo
455074
Mi pare di capire che, al fine per ottenere la dimensione di un file bisogna aprirlo e leggerlo per prima cosa, ma questo risultato suggerisce fortemente che mi sbaglio. Qualcuno sa perché questo accade? Inoltre, c'è un modo per impedire al metodo file.length() di accedere alla dimensione di un file?
Sto usando Ubuntu 12.10
Il filesystem ext * salva le dimensioni? Prova questo: 'cat/dev/urandom> file; chmod 000 file; ls -sh file; "Potrei sbagliarmi, ma sono abbastanza sicuro che' ls' possa leggere le dimensioni del file anche se le autorizzazioni sono zero. – BenjiWiebe
Perché devi aprire il file per ottenere la lunghezza? Ciò verrebbe memorizzato nelle informazioni della directory nel file system. – OldProgrammer