Sto provando a scrivere un'applicazione Java in esecuzione su un ambiente Linux su un filesystem NFS.Il modo migliore per distinguere tra ESTALE e ENOENT in Java
Ho notato che quando chiamo java.io.File.exists()
, restituisce false sia per ESTALE
(maniglia Stale NFS file) e ENOENT
(Nessun file o directory). Per la mia applicazione, ho bisogno di essere in grado di distinguere tra i due.
Attualmente sto considerando l'implementazione della chiamata stat()
utilizzando JNA, ma sembra essere eccessivo, con la necessità di implementare l'intera struttura stat e tutte le cose __xstat64
che sembrano così dipendenti dalla piattaforma.
C'è un modo semplice per ottenere semplicemente il errno
sottostante dopo una chiamata Java come File.exists()
o altre idee per risolvere questo problema?
Mi piace questo suggerimento. Ho anche considerato l'implementazione di 'access (file, F_OK)', che era molto più semplice, ma anche i risultati non differenziano 'ESTALE' e' ENOENT'. Alla fine, tuttavia, abbiamo trovato una soluzione che non richiedeva questa differenziazione. –