2012-06-15 7 views
5

Ho bisogno di qualcosa per ottenere il conteggio degli hard link da un file in un sistema operativo solaris10 in java.ottenere il conteggio degli hard link in Java

parsing ls -l non è un'opzione.

Ho provato a usare posix per java http://bmsi.com/java/posix/index.html ma non riuscivo a farlo funzionare.

C'è qualche altra API o codice leggero per ottenere queste informazioni?

+0

"ls -l | wc -l" non funziona? – alfasin

+0

@alfasin: A corto di _parsing 'ls' non è un'opzione_? –

+0

@ K-ballo mi dispiace - Non ho capito il tuo Q. – alfasin

risposta

8

In Java 7 è possibile utilizzare il nuovo file attributes API per acquistarlo con java.nio.file.Files.getAttribute(path, "unix:nlink").

La vista attributo "unix" non è effettivamente definita come parte dell'API standard (e la vista "posix" non fornisce nlink), ma è disponibile nell'implementazione standard Oracle/OpenJDK. D'altra parte creazione un collegamento è ora disponibile con il metodo standard createLink su Files. Vai a capire.

+0

Impressionante ... peccato abbiamo il 6 come standard in questo momento. :( – DRTauli

+0

Quindi è meglio pianificare l'aggiornamento, in quanto [Java 6 sarà fuori dalla vita in 5 mesi (novembre 2012)] (http://www.oracle.com/technetwork/java/eol-135779.html). – Tometzky

2

Breve using JNI e stat/lstat in C l'unica cosa migliore di parsing ls sarebbe quello di eseguire:

stat --format=%h filename 

che ha appena uscite un numero ed è facile da analizzare.

Ma tutto diventa complicato quando possono esserci caratteri non ascii nei nomi dei file. Dovresti convertire il nome del file in encoding nativo e, a volte, non tutti i caratteri consentiti nel nome file possono essere convertiti (se la codifica nativa non è una sorta di unicode).

+0

Cool funziona. Grazie! ma uno dei server su cui ho provato non ha stat ... Ci sono altre soluzioni che non richiedono installazione o qualcosa del genere ... grazie in anticipo. :) – DRTauli

+0

è stat a linux solo applicazione? – DRTauli

0

Inoltre, provare a provare l'implementazione jnr-posix di stat (2).