2012-06-15 15 views
5

Necesito algo para obtener el conteo del enlace duro de un archivo en un sistema operativo solaris10 en Java.obtener Hard Link Count en Java

análisis ls -l no es una opción.

He intentado usar posix para java http://bmsi.com/java/posix/index.html pero no he podido lograr que funcione.

¿Hay alguna otra API o código ligero para obtener esta información?

+0

"ls -l | wc -l" no funciona? – alfasin

+0

@alfasin: ¿Falta de _parsing 'ls' no es una opción_? –

+0

@ K-ballo lo siento - No entendí su Q. – alfasin

Respuesta

8

En Java 7 puede usar el nuevo file attributes API para obtenerlo con java.nio.file.Files.getAttribute(path, "unix:nlink").

La vista de atributo "unix" no está realmente definida como parte de la API estándar (y la vista "posix" no le da nlink), pero está disponible en la implementación estándar de Oracle/OpenJDK. Por otro lado crear un enlace está ahora disponible con el método createLink estándar en Files. Imagínate.

+0

Impresionante ... lástima que tengamos 6 como nuestro estándar en este momento. :( – DRTauli

+0

Así que es mejor planificar para la actualización, ya que [Java 6 estará fuera de la vida en 5 meses (noviembre de 2012)] (http://www.oracle.com/technetwork/java/eol-135779.html). – Tometzky

2

corto de using JNI y stat/C lstat en la única cosa mejor que analizar ls sería correr:

stat --format=%h filename 

que acaba da salida a un número y es fácil de analizar.

Pero todo se complica cuando puede haber caracteres no-ascii en los nombres de archivo. Debería convertir el nombre de archivo a codificación nativa y, a veces, no todos los caracteres permitidos en el nombre de archivo se pueden convertir (si la codificación nativa no es un tipo de Unicode).

+0

Cool funciona. ¡Gracias! pero uno de los servidores en el que lo probé no tiene estadística ... ¿Hay alguna otra solución que no requiera instalación o algo así ... gracias de antemano. :) – DRTauli

+0

¿es una aplicación de stat linux only? – DRTauli

0

También considere probar la implementación jnr-posix de stat (2) para esto.