有沒有一種方法讓java程序確定它在文件系統中的位置?在java中獲取文件路徑
8
A
回答
11
您可以使用CodeSource#getLocation()
。 CodeSource
可通過ProtectionDomain#getCodeSource()
獲得。 ProtectionDomain
又可通過Class#getProtectionDomain()
獲得。
URL location = getClass().getProtectionDomain().getCodeSource().getLocation();
File file = new File(location.getPath());
// ...
這將返回Class
問題的確切位置。
更新:根據評論,它顯然已經在類路徑中。然後您可以使用ClassLoader#getResource()
,其中您傳遞了根目錄相對路徑。
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL resource = classLoader.getResource("filename.ext");
File file = new File(resource.getPath());
// ...
你甚至可以把它作爲使用ClassLoader#getResourceAsStream()
的InputStream
。
InputStream input = classLoader.getResourceAsStream("filename.ext");
// ...
這也是使用打包資源的正常方式。如果它位於包裝內,則改爲使用com/example/filename.ext
。
-1
0
對於我這個工作,當我知道什麼是該文件的確切名稱:
File f = new File("OutFile.txt");
System.out.println("f.getAbsolutePath() = " + f.getAbsolutePath());
或者有這個解決方案太:http://docs.oracle.com/javase/tutorial/essential/io/find.html
相關問題
- 1. java獲取文件路徑
- 2. 在java中獲取文件的路徑
- 3. 獲取文件路徑中的Java Swing
- 4. Java屬性,獲取文件路徑
- 5. Java - 從文件路徑獲取映像
- 6. Java - 獲取「程序文件」路徑
- 7. 在JAVA中捕獲文件路徑
- 8. 在jsp中獲取文件夾路徑
- 9. 在c中獲取文件路徑#
- 10. 在Python中獲取文件路徑2.7
- 11. Javascript獲取文件路徑
- 12. 獲取CSS文件路徑
- 13. html5獲取文件路徑
- 14. 獲取文件路徑
- 15. asp:FileUpload獲取文件路徑
- 16. 獲取文件夾路徑
- 17. Symfony獲取文件路徑
- 18. 獲取文件的路徑
- 19. 在Python中獲取絕對文件路徑的目錄路徑
- 20. 獲取下載文件夾在Windows中的路徑java
- 21. 如何在java中獲取瀏覽的文件路徑
- 22. 獲取資產路徑在文件中讀取多個文件
- 23. 獲取sharedpreferences文件的文件路徑
- 24. 獲取文件路徑的文件名
- 25. 從文件路徑獲取文件名
- 26. 從文件路徑獲取文件目錄路徑
- 27. 如何在extjs中獲取文件夾路徑而不是文件路徑
- 28. 從php中獲取文件路徑?
- 29. Java獲取當前路徑
- 30. 獲取庫的路徑 - Java
+1,但注意p rotectionDomain.getCodeSource()和CodeSource.getLocation()都可以爲null。 – 2010-05-26 18:22:28
@bkail:當它使用設計不佳的本土類加載器加載時,或者從某個外部流源加載時,它確實可能會返回null。但是,這通常不適用於具有'main() '。 – BalusC 2010-05-26 18:26:44
這絕對是做這份工作 - 但它看起來不太好。我需要做的是加載一個配置文件,它需要與我的jar文件在同一個文件夾中,但可以從任何位置運行。這是獲取文件位置信息的正確方法嗎? – markovuksanovic 2010-05-26 21:34:02