Estoy familiarizado con la obtención del contenido de un archivo de propiedades dado el nombre del archivo, y obviamente MyClass.class.getResource ('*. Properties') no funcionará, pero ¿cómo puedo obtener una lista de TODOS los archivos de propiedades? ubicado en el mismo paquete que mi clase?¿Es posible cargar todos los archivos de propiedades contenidos en un paquete de forma dinámica? es decir, MyClass.class.getResource ('*. properties');
Respuesta
Puede hacer este tipo de cosas con Spring. Ver 4. Resources, particurlyrely (o notabily?) (¿O principalmente?) (¿O principalmente?) Al 4.7.2 Wildcards in application context constructor resource paths.
Maldiciones, alguien robó mi trueno :) Tenga una galleta. +1 – skaffman
Suponiendo que no está empaquetado en JAR, puede usar File#listFiles()
para esto. He aquí un ejemplo patada de salida:
String path = MyClass.class.getResource("").getPath();
File[] propertiesFiles = new File(path).listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".properties");
}
});
Si se trata de JAR-envasados, entonces usted necesita un poco más de código, para empezar JarFile
API. Puede encontrar otro ejemplo en this answer.
Lo sentimos, no se permite el archivo. Actualmente la clase no está en un frasco ... pero no sé qué depara el futuro para mi clase y no tengo control sobre el entorno en el que se ejecutará, por lo que debe estar lo más desacoplado posible – Stoney
Lo siento ... no tiene suficientes puntos para votar su respuesta todavía ... – Stoney
Ésta es la forma en que lo hice,
Class<? extends Object> clazz = AnyKnownClassInTheJar.class;
String classFileName = clazz.getSimpleName() + ".class";
URL classResource = clazz.getResource(classFileName);
if (!"jar".equals(classResource.getProtocol())) {
// Class not from JAR
return;
}
JarURLConnection classConnection = (JarURLConnection)classResource.openConnection();
JarFile jar = classConnection.getJarFile();
for (Enumeration<JarEntry> i = jar.entries(); i.hasMoreElements();) {
JarEntry entry = i.nextElement();
if (entry.getName().endsWith(".properties")) {
// Load the property file
}
}
¡Impresionante! Esto incluso funciona en Android. El truco es comenzar con 'classResource = AnyClassInTheApp.class.getResource ("/AndroidManifest.xml ")'. Las entradas enumeradas en el jar serán los contenidos del APK. – TWiStErRob
- 1. ¿Es posible solicitar de forma recursiva todos los archivos en un directorio en Ruby?
- 2. ¿Es posible incluir archivos de paquete de recursos dentro de un paquete de recursos
- 3. Propiedades de Java: archivos .properties vs xml?
- 4. ¿Es posible animar un PolyLineSegment en Silverlight, es decir, PointCollection?
- 5. ¿Es posible importar un archivo MX sin evaluar los contenidos?
- 6. ¿Es posible eliminar propiedades de una clase dinámica?
- 7. ¿Es posible transformar los tipos en un paquete de parámetros?
- 8. ¿Es posible usar Ajax para cargar archivos?
- 9. ¿Están todos los métodos de Java Properties totalmente sincronizados?
- 10. Seleccionar todos los contenidos de un div
- 11. ¿Es posible cargar archivos de FTP a FTP usando PHP
- 12. ¿Es imposible usar Generics de forma dinámica?
- 13. ¿Cuál es la mejor estrategia para cargar propiedades?
- 14. properties-maven-plugin: Error al cargar propiedades-archivo
- 15. Cargador de archivos JS con transmisión, es decir, sin cargar todo el archivo en la memoria
- 16. ¿.NET tiene un equivalente a los archivos .properties de Java?
- 17. ¿Es posible copiar todos los archivos de un depósito S3 a otro con s3cmd?
- 18. tamaño total de los contenidos de todos los archivos en un directorio
- 19. Propiedades vs Paquete de recursos
- 20. ¿Es posible crear una función de forma dinámica durante el tiempo de ejecución en C++?
- 21. Cómo cargar un archivo .properties en un JSP
- 22. ¿Es posible emular un iframe?
- 23. Cómo leer archivos .rej, es decir,
- 24. ¿Cómo identificar los contenidos de un byte [] es un jpeg?
- 25. Flex 4: ¿Es posible tener un BorderContainer que se ajuste automáticamente a los contenidos que contiene?
- 26. listando todos los contenidos de una carpeta en tfs
- 27. ¿Es posible precargar los contenidos de la página con la técnica ajax/jquery?
- 28. ¿Cuáles son las ventajas de cargar DLL de forma dinámica?
- 29. En .Net, ¿cuál es la forma más rápida de buscar de forma recursiva todos los archivos desde un directorio raíz?
- 30. ¿Es posible dividir los archivos maven pom?
Esto es fácil con la primavera, por lo que en la remota posibilidad de que se está usando, no puedo darle una respuesta basada en la primavera. – skaffman
Ok ... entonces estoy empezando a pensar que esto no es posible. Desde mi punto de vista, Java usa la carga de clases lenta y, por lo tanto, el cargador de clases no sabe qué hay en un paquete hasta que se le pide que recupere una clase. Lo más parecido que se me ocurre es * intentar * resolver un nombre de paquete en el directorio, obtener una lista de prop. archivos en el directorio e intente cargarlos a través de class.getResource(). Sé que es un truco; hay una mejor manera? – Stoney
Aha! Parece que funcionaría, cualquier respuesta que utilice Spring es bastante aceptable y sería muy apreciado – Stoney