Ho la seguente struttura percorso per la classe principale:Come leggere un file delle proprietà in java dall'esterno della cartella Class?
D:/java/myapp/src/manClass.java
e voglio mettere il file delle proprietà in
D:/java/myapp/config.properties
che conterrà un nome di file e alcune altre configurazioni. Io misi il nome del file nel file di proprietà in questo modo: file=file_to_read.txt
questo file_to_read.txt
sarà situato in D:/java/myapp/folder_of_file/
La classe principale leggerà il nome del file il file prima delle proprietà e quindi ottenere il contenuto formano file .
Posso farlo se entrambi config.properties
e file_to_read.txt
sono in src/
con mainClass.java
. Ma non potrei riuscire nel modo in cui voglio farlo.
Qualcuno può aiutarmi con questo? Ho bisogno del tuo suggerimento su cosa posso fare se voglio mettere la cartella myapp
in qualsiasi punto della mia unità con la stessa struttura interna in essa descritta sopra e il programma farà il lavoro correttamente.
Ho anche bisogno del tuo suggerimento che se voglio fare il lavoro dal vaso creato dopo la costruzione del progetto, allora posso farlo senza problemi?
Ho provato come la seguente solo per leggere il file delle proprietà:
URL location = myClass.class.getProtectionDomain().getCodeSource().getLocation();
String filePath = location.getPath().substring(1,location.getPath().length());
InputStream in = myClass.class.getResourceAsStream(filePath + "config.properties");
prop.load(in);
in.close();
System.out.println(prop.getProperty("file"));
Ma questo dà sbagliare quando cercato di getProperty dalle file delle proprietà. Grazie!
Sì, utilizzare la prima soluzione di BalusC. – Klinetel
Grazie, ha funzionato per me. Ma, ho bisogno di aggiungere un commento. Se si aggiunge la cartella al classpath, non è necessario specificare la cartella quando si ottiene la risorsa come stream, significa che è sufficiente chiamare getResourceAsStream ("/ config.properties") anche se tale file si trova in una cartella denominata risorse –
@Jesus: Sì, è intenzionato utilizzare il contenuto della cartella nello stesso modo di tutte quelle altre cartelle già nel percorso di classe (predefinito). – BalusC