Esiste un modo per il programma java per determinare la sua posizione nel file system?Come ottenere il percorso del file in java
risposta
Per questo è possibile utilizzare CodeSource#getLocation()
. Il CodeSource
è disponibile per ProtectionDomain#getCodeSource()
. Il ProtectionDomain
a sua volta è disponibile per Class#getProtectionDomain()
.
URL location = getClass().getProtectionDomain().getCodeSource().getLocation();
File file = new File(location.getPath());
// ...
Questa operazione riporta la posizione esatta del Class
in questione.
Aggiornamento: come da commenti, è apparentemente già nel classpath. È quindi possibile utilizzare semplicemente ClassLoader#getResource()
in cui si passa il percorso relativo al pacchetto radice.
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL resource = classLoader.getResource("filename.ext");
File file = new File(resource.getPath());
// ...
È possibile anche ottenere come un InputStream
utilizzando ClassLoader#getResourceAsStream()
.
InputStream input = classLoader.getResourceAsStream("filename.ext");
// ...
Questo è anche il modo normale di utilizzare le risorse pacchettizzate. Se si trova all'interno di un pacchetto, utilizzare invece, ad esempio, com/example/filename.ext
.
se si vuole ottenere il "directory di lavoro" per il programma attualmente in esecuzione, poi basta usare:
new File("");
La directory di lavoro non è necessariamente dove si trova il programma. – Douglas
Per me questo ha funzionato, quando ho saputo quello che era il nome esatto del file:
File f = new File("OutFile.txt");
System.out.println("f.getAbsolutePath() = " + f.getAbsolutePath());
O c'è questa soluzione troppo: http://docs.oracle.com/javase/tutorial/essential/io/find.html
- 1. Come ottenere il percorso del file dall'URI?
- 2. Come ottenere il percorso del file .ipa
- 3. Come ottenere il percorso del programma java in esecuzione
- 4. Come ottenere il percorso desktop in Java
- 5. Get percorso completo del file in java
- 6. Come ottenere il percorso completo del file build.gradle di Groovy?
- 7. Spring MVC: come ottenere il percorso del file nel controller?
- 8. Come ottenere il nome/percorso del file Excel in VBA
- 9. Come ottenere il percorso del file corrente in javascript
- 10. Come ottenere il percorso del file del modulo importato
- 11. Ottenere il percorso di classe del file in esecuzione
- 12. Percorso del file delle proprietà in java
- 13. Come ottenere il percorso della directory di esecuzione in java
- 14. Come ottenere il nome file dal percorso file in swift
- 15. Ottenere il percorso del file da un'immagine in ImageView
- 16. Come ottenere il percorso del file di script InnoSetup corrente?
- 17. Come ottenere il percorso assoluto del nome file javascript corrente
- 18. Ottenere il percorso del file in ASP.NET e XDocument.Load
- 19. Ottenere il percorso del file tnsnames.ora tramite il codice
- 20. Come ottenere il nome del file dal percorso del file in Android
- 21. Java - ottieni il percorso "file di programma"
- 22. Come ottenere l'URL del file dal percorso assoluto in Delphi?
- 23. Rails - Come ottenere il percorso del file (non il percorso url) per le risorse?
- 24. Come posso ottenere il percorso del progetto in Scala?
- 25. Come ottenere il percorso completo per un file in VBScript?
- 26. Come ottenere il nome del percorso inviato in Zend framework?
- 27. Ottenere il percorso assoluto del file eseguibile, utilizzando C#?
- 28. proprietà Java, ottenendo percorso del file
- 29. Trascinare il percorso del file su Java Swing JTextField
- 30. Come nascondere il percorso del file nell'URL?
+1, ma nota che P rotectionDomain.getCodeSource() e CodeSource.getLocation() possono essere entrambi nulli. –
@bkail: Può effettivamente restituire null quando viene caricato utilizzando un programma di caricamento di classe homegrown mal progettato, oppure quando viene caricato da una fonte di flusso esterna, ecc. Ciò tuttavia, di solito non si applica ai programmi Java "concreti" con un 'main() '. – BalusC
Questo sicuramente fa il lavoro - ma non sembra molto bello. Quello che devo fare è caricare un file di configurazione che deve essere nella stessa cartella del mio barattolo, ma può essere eseguito da qualsiasi posizione. È questo il modo giusto per ottenere le informazioni sulla posizione del file? – markovuksanovic