Utilità per leggere il file di testo delle risorse su String (Java) [chiuso]


215

C'è qualche utilità che aiuta a leggere un file di testo nella risorsa in una stringa. Suppongo che questo sia un requisito popolare, ma non sono riuscito a trovare alcuna utilità dopo aver cercato su Google.


1
chiarisci cosa intendi per "file di testo della risorsa" vs "file di testo nella risorsa" - non è facile capire cosa stai cercando di ottenere.
Mat,

Questo è solo un file di testo in classpath come "classpath *: mytext / text.txt"
Loc Phan,

Risposte:


301

Sì, Guava fornisce questo nella Resourcesclasse. Per esempio:

URL url = Resources.getResource("foo.txt");
String text = Resources.toString(url, StandardCharsets.UTF_8);

21
@JonSkeet Questo è fantastico, tuttavia per le applicazioni Web potrebbe non essere la soluzione migliore, l'implementazione getResourceè in uso Resource.class.getClassLoaderma nelle applicazioni Web, potrebbe non essere il "tuo" caricatore di classi, quindi è consigliabile (ad esempio in [1]) utilizzare Thread.currentThread().getContextClassLoader().getResourceAsStreaminvece (riferimento [1]: stackoverflow.com/questions/676250/… )
Eran Medan,

2
@EranMedan: Sì, se si desidera il classloader di contesto, si desidera utilizzarlo in modo esplicito.
Jon Skeet,

6
Nel caso speciale in cui la risorsa è accanto alla tua classe, puoi fare ciò Resources.toString(MyClass.getResource("foo.txt"), Charsets.UTF_8)che garantisce l'uso del caricatore di classe corretto.
Bogdan Calmac,

2
com.google.common.io.Resourcesè contrassegnato come instabile secondo SonarQube
Ghilteras l'

1
guavaha cambiato l'implementazione. Per guava 23 l'implementazione piace seguire. ClassLoader loader = MoreObjects.firstNonNull( Thread.currentThread().getContextClassLoader(), Resources.class.getClassLoader());
XX
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.