Ho familiarità con l'ottenimento del contenuto di un file di proprietà dato il nome del file e ovviamente MyClass.class.getResource ('*. Properties') non funzionerà, ma come posso ottenere un elenco di TUTTI i file delle proprietà si trova nello stesso pacchetto della mia classe?È possibile caricare dinamicamente tutti i file di proprietà contenuti in un pacchetto? Ad esempio MyClass.class.getResource ('*. properties');
risposta
È possibile eseguire questo tipo di operazioni con Spring. Vedere 4. Resources, in modo particolare (o notoriamente?) (O principalmente?) (O principalmente?) A 4.7.2 Wildcards in application context constructor resource paths.
Maledizioni, qualcuno mi ha rubato il tuono :) Avere un biscotto. +1 – skaffman
Supponendo che non sia confezionato in JAR, è possibile utilizzare File#listFiles()
per questo. Ecco un esempio kickoff:
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");
}
});
Se si tratta di JAR-confezionato, allora avete bisogno di un po 'più di codice, per cominciare JarFile
API. È possibile trovare un altro esempio in this answer.
Siamo spiacenti, nessun file consentito. La classe non è attualmente in un barattolo ... ma non so cosa riserva il futuro per la mia classe e non ho alcun controllo sull'ambiente in cui verrà eseguito, quindi deve essere il più disaccoppiato possibile – Stoney
Scusa ... non ho abbastanza punti per votare la tua risposta ancora ... – Stoney
Ecco come ho fatto,
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
}
}
Fantastico! Funziona anche su Android. Il trucco è iniziare con 'classResource = AnyClassInTheApp.class.getResource ("/AndroidManifest.xml ")'. Le voci elencate nel contenitore saranno i contenuti dell'APK. – TWiStErRob
- 1. È possibile animare un PolyLineSegment in Silverlight, ad esempio PointCollection?
- 2. Proprietà Java: file .properties vs xml?
- 3. Seleziona tutti i contenuti di un div
- 4. In rotaie è possibile caricare dinamicamente il layout della classe?
- 5. Alias tutti i contenuti di un modulo/namepsace in IEX
- 6. dove inserire i file .properties in un progetto Eclipse?
- 7. Dove memorizzare i file .properties per Java?
- 8. Elenca tutti i file in un pacchetto homebrew
- 9. Come leggere i file .rej, ad esempio
- 10. Come ottenere tutti i nomi delle classi in un pacchetto?
- 11. Elenca tutti i sottopacchetti di un pacchetto
- 12. È possibile trasformare i tipi in un pacchetto di parametri?
- 13. È possibile eliminare tutti i file in una directory tranne un singolo file?
- 14. È possibile caricare i parametri in un modulo Perl caricando?
- 15. Provare a caricare dinamicamente un'API e un file JS
- 16. Caricare più file di proprietà utilizzando <util: properties> nella primavera 3
- 17. Monitorare i contenuti di file/directory?
- 18. Metodo per caricare dinamicamente file di classe java
- 19. È possibile creare dinamicamente un UITextView?
- 20. Come caricare i valori di impostazione da un file di proprietà Java?
- 21. È possibile scaricare JavaScript caricato dinamicamente?
- 22. È possibile enumerare tutti i metodi e le proprietà disponibili tramite Invoke() di un oggetto [ADSI]?
- 23. È possibile che GUID siano generati con tutti gli stessi caratteri in .NET? (ad esempio: {11111111-1111-1111-1111-111111111111})
- 24. È possibile caricare in modo sincrono i dati da Firebase?
- 25. È possibile "comprimere" i percorsi dei file di contenuti nell'output di build in visual studio?
- 26. JQuery per caricare dinamicamente il file Javascript
- 27. Ottenere tutti i subpacks da un pacchetto
- 28. È possibile caricare un database nella RAM?
- 29. Come caricare file in un jsp
- 30. È possibile utilizzare Ajax per caricare file?
Questo è facile con la Primavera, così sulla remota possibilità che si sta utilizzando, posso darvi una risposta in base a molla. – skaffman
Ok ... quindi sto iniziando a pensare che non sia possibile. Da quanto ho capito, Java utilizza il lazy classloading e quindi il classloader non sa cosa contiene un pacchetto finché non viene richiesto di recuperare una classe. La cosa più vicina che riesco a fare è * tentare * di risolvere il nome di un pacchetto nella directory, ottenere un elenco di oggetti di scena. file nella directory e tentare di caricarli tramite class.getResource(). So che è un trucco; C'è un modo migliore? – Stoney
Aha! Sembra che funzioni, qualsiasi risposta che utilizzi Spring è abbastanza accettabile e sarebbe molto apprezzata – Stoney