2010-09-15 12 views
5

Estoy escribiendo casos de prueba que deben ser ejecutados en el entorno osgi, he puesto los datos de prueba que son un conjunto de archivos en el paquete de prueba. Puedo acceder a los archivos de datos de prueba usando bundle.getResource, que devuelve una URL desde la que puedo obtener el InputStream para un archivo en particular, pero ¿cómo puedo encontrar toda la lista de archivos en una carpeta particular en el plugin de prueba? En eclispe podría usar fileLocator para hacer esto.Encontrar archivos y carpetas en un paquete OSGI

/bundle
          testdata
                uno.txt
                two.txt
                three.txt
                carpeta1
                              file1.txt
                              file2.txt

En el paquete anterior quiero encontrar todos los archivos y carpetas que están presentes en la carpeta testdata.


mejores Reards,
Keshav

Respuesta

-5

Recursos (clases, archivos, arroyos, etc.) visitada por el cargador de clases puede ser proporcionada por todo. Por lo general, los recursos se cargan desde un archivo JAR. Pero también podría ser una base de datos, un sistema de archivos o un recurso HTTP. Entonces, para obtener una lista de recursos, dependes de la fuente detrás del cargador de clases. En caso de que los recursos estén ubicados dentro de un JAR, deberá obtener el JAR y acceder a él a través de, por ejemplo, java.util.zip. Dado que la interfaz de ClassLoader no proporciona información acerca de la fuente subyacente, debe seguir otras formas (como conectarse al marco OSGi que utiliza).

+3

¡¡¡ERROR !!! La iteración sobre archivos zip, etc. NO es portátil en Java, Java tiene una abstracción para los recursos que está completamente rota. Es una práctica muy mala que desafortunadamente prevalece porque los cargadores de clase no tienen un iterador para sus recursos. Vea la respuesta de BJ: OSGi tiene Bundle.findEntries y Bundle.getEntryPaths que le permite iterar sobre los recursos de una manera portátil. –

12

Si sabe en qué paquete está la información, use Bundle.findEntries o Bundle.getEntryPaths.

Cuestiones relacionadas