2010-03-15 14 views
6

Si prega di consultare frammento di codice:Java File.isDirectory() restituisce False per una directory in Linux

File[] additionalFiles = new File(FILE_PATH).listFiles(); 
boolean isDirectory = file.isDirectory(); 

Ho verificato che il percorso della directory è corretto, e quando faccio funzionare il codice su Windows, il valore di isDirectory è vero (come dovrebbe essere). Qualche suggerimento sul perché questo si verifica su Linux (RedHat Enterprise Linux)?

+0

La directory è una directory normale o un collegamento simbolico? Quale versione di Java? Quale versione di RH? La directory contiene caratteri insoliti (non inglesi) nel nome? – Yishai

+1

Qual è il valore di 'FILE_PATH'? Per caso contiene dei separatori di file in stile Windows ('\')? –

+0

Credo che sia un simlink, la directory è fuori su un server condiviso- in che modo questo ha impatto? La versione Java è l'aggiornamento 17. La versione RH è Enterprise RedHat 5. La directory contiene tutte le lettere minuscole, nessun carattere speciale ei separatori dei file sono corretti (ho stampato la directory durante l'esecuzione del programma, quindi l'ho copiata e incollata nella riga di comando dopo "cd" e con successo e cd'd nella directory). – shelt536

risposta

6

I collegamenti non vengono letti come directory, se non ricordo male. Il modo giusto in giro che è:

new File(FILE_PATH).getCanonicalFile().isDirectory(); 

(NOTA: Non testato, non ho una macchina Linux per testare questo su facilmente).

5

Ho riscontrato questo problema una volta. Il mio caso è così divertente, stavo leggendo il percorso da un file di proprietà e quel percorso conteneva un carattere di tabulazione alla fine della stringa. Questo è stato il motivo per cui il percorso non è stato riconosciuto come directory

+0

Io e te entrambi :) – bjornl

Problemi correlati