![](/img/trans.png)
[英]How to get a package file path in a java project even after exporting and running from different file location
[英]How to get the path of a file in my java project when running java from batch file?
我有一個在Windows上運行的Java 8應用程序。 我想在Java項目中找到文件而不使用絕對路徑。 當我從命令提示符運行應用程序時,以下代碼有效: System.getProperty("user.dir")
。 但是,當我從批處理文件運行Java應用程序時,此代碼返回該批處理文件的路徑,該路徑與Java應用程序的路徑不同。
如何獲取Java項目中某個文件夾中的abc.txt文件的路徑?
System.getProperty(“ user.dir”)為您提供了正確的目錄,因為您的應用程序是在批處理文件中啟動的。 這就是它的工作方式。
您始終可以使用ClassLoader將文件加載到應用程序中。
假設您已將abc.txt放入項目文件夾中。 實際上,如果您在代碼中的某處使用它作為資源文件,則應將其放在項目的src / resources文件夾中。 然后在您的代碼中,執行以下操作:
File file = new File(getClass().getResource("abc.txt").getFile());
無論您從哪里啟動應用程序,都可以通過該文件訪問文件。
看一下有關使用ClassLoader的文章,將有助於您更好地了解如何在Java中加載資源。
更新
MyClass.java僅包含以下代碼:
public class MyClass {
public static void main(String[] args) {
System.out.println("s: " + MyClass.class.getClassLoader().getResource("abc.txt").getFile());
}
}
我遇到了同樣的問題,在搜索了很多東西后發現的唯一解決方法是,將啟動程序批處理文件放在與Java應用程序相同的路徑中,然后生成批處理的快捷方式,這就是我可以將其放置在其他文件夾中的任何位置的原因。 ...
之后,Java運行良好...
假設您基本上希望在代碼中包含相對路徑,則可以使用以下函數獲取源目錄,然后使用源代碼路徑中文件的相對位置獲取任何文件。
public static String getMySourcePath() {
URL location = <Your class>.class.getProtectionDomain().getCodeSource()
.getLocation();
String srcPath = location.toString().replace("file:/", "")
.replace("bin", "src");
return srcPath;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.