Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java get文件夹与Jar位于同一目录中_Java_File_Jar_Io - Fatal编程技术网

Java get文件夹与Jar位于同一目录中

Java get文件夹与Jar位于同一目录中,java,file,jar,io,Java,File,Jar,Io,假设我的桌面上有一个导出的Jar文件,然后是一个我想访问的文件夹,这样我的Jar文件就可以从中加载文件。如何在不硬编码路径的情况下访问该文件夹?如果我清楚理解,您可以在尝试访问文件夹时使用相对路径。例如,如果您将jar作为独立应用程序运行,则相对路径。将是一个包含jar的文件夹。因此,当您将names.txt文件放在jar旁边时,您可以通过以下方式访问它: new File("./names.txt"); 希望我以正确的方式理解您,这将有所帮助。如果我理解清楚,您可以在尝试访问文件夹时使用相对

假设我的桌面上有一个导出的Jar文件,然后是一个我想访问的文件夹,这样我的Jar文件就可以从中加载文件。如何在不硬编码路径的情况下访问该文件夹?

如果我清楚理解,您可以在尝试访问文件夹时使用相对路径。例如,如果您将jar作为独立应用程序运行,则相对路径。将是一个包含jar的文件夹。因此,当您将names.txt文件放在jar旁边时,您可以通过以下方式访问它:

new File("./names.txt");

希望我以正确的方式理解您,这将有所帮助。

如果我理解清楚,您可以在尝试访问文件夹时使用相对路径。例如,如果您将jar作为独立应用程序运行,则相对路径。将是一个包含jar的文件夹。因此,当您将names.txt文件放在jar旁边时,您可以通过以下方式访问它:

new File("./names.txt");
File f = new File("Folder")
希望我能正确地理解你,这会有所帮助

File f = new File("Folder")
这个File对象指向Jar工作目录中的文件夹目录

此文件对象指向Jar工作目录中的文件夹目录。

请参见此处:

选择一个您想要目录的类,例如:Test:

String path = Test.class.getProtectionDomain().getCodeSource().getLocation().getPath();
String decodedPath = URLDecoder.decode(path, "UTF-8");
请看这里:

选择一个您想要目录的类,例如:Test:

String path = Test.class.getProtectionDomain().getCodeSource().getLocation().getPath();
String decodedPath = URLDecoder.decode(path, "UTF-8");

以下代码应提供包含JAR文件的目录:

URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
File directory = new File(url.toURI()).getParentFile();

以下代码应提供包含JAR文件的目录:

URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
File directory = new File(url.toURI()).getParentFile();

我经常听到这个问题,它总是归结为:如何在运行时加载资源

这类问题的主要原因是,一个人正在开发一个应用程序,现在想要创建一个可分发的包。这通常以这样的方式结束:

... / my-application-folder
       | -- lib / *.jar
       | -- main.jar
       | -- config.properties
可能有多个配置文件。应用程序本身的配置,所使用的日志框架的配置,等等。这并不重要。如果要访问此类资源,应分两步进行:

1确保包含资源的所有文件夹(如配置文件)都是类路径的一部分。如果使用java-JAR main.JAR命令在这里运行JAR文件main.JAR,那么这个JAR文件应该包含一个包含目录的清单文件。以及类路径条目中所需的所有库jar。[可选:可能所有配置文件都位于配置/子文件夹中。那么此文件夹必须是类路径的一部分。]

2在应用程序内部,您可以使用类加载器访问此类资源:

ClassLoader loader = Thread.currentThread().getContextClassLoader();
URL url = loader.getResource(neededResource);
// do something with url, e.g. open stream, read from it, and close stream
如果您有一个用户可自定义的路径,那么有几种可能性。例如,您可以将一个系统属性传递给应用程序,正如Reddy在他的评论中所建议的那样。您还可以在配置文件中拥有一个属性,您将在应用程序的开始部分加载该属性。但是,在运行时,您手头有指向此可自定义文件夹的路径。然后执行以下操作:

String customizablePath = getCustomizablePath();
URL customizablePathURL = new File(customizablePath).toURI().toURL();
ClassLoader loader = new URLClassLoader(new URL[] {customizablePathURL});
然后你可以像上面那样继续。

我经常听到这个问题,它总是归结为:如何在运行时加载资源

这类问题的主要原因是,一个人正在开发一个应用程序,现在想要创建一个可分发的包。这通常以这样的方式结束:

... / my-application-folder
       | -- lib / *.jar
       | -- main.jar
       | -- config.properties
可能有多个配置文件。应用程序本身的配置,所使用的日志框架的配置,等等。这并不重要。如果要访问此类资源,应分两步进行:

1确保包含资源的所有文件夹(如配置文件)都是类路径的一部分。如果使用java-JAR main.JAR命令在这里运行JAR文件main.JAR,那么这个JAR文件应该包含一个包含目录的清单文件。以及类路径条目中所需的所有库jar。[可选:可能所有配置文件都位于配置/子文件夹中。那么此文件夹必须是类路径的一部分。]

2在应用程序内部,您可以使用类加载器访问此类资源:

ClassLoader loader = Thread.currentThread().getContextClassLoader();
URL url = loader.getResource(neededResource);
// do something with url, e.g. open stream, read from it, and close stream
如果您有一个用户可自定义的路径,那么有几种可能性。例如,您可以将一个系统属性传递给应用程序,正如Reddy在他的评论中所建议的那样。您还可以在配置文件中拥有一个属性,您将在应用程序的开始部分加载该属性。但是,在运行时,您手头有指向此可自定义文件夹的路径。然后执行以下操作:

String customizablePath = getCustomizablePath();
URL customizablePathURL = new File(customizablePath).toURI().toURL();
ClassLoader loader = new URLClassLoader(new URL[] {customizablePathURL});

然后您可以继续上面的操作。

使用与导出相同的路径?是否要访问Jar文件所在的文件夹?但用户可以更改路径。通过在程序系统中传递参数java myJar-DloadFilesFrom=C:\something\和。getPropertyloadFilesFrom;请提供您尝试过的内容?使用与导出相同的路径?是否要访问Jar文件所在的文件夹?但用户可以更改路径。通过在程序系统中传递参数java myJar-DloadFilesFrom=C:\something\和。g
etPropertyloadFilesFrom;请提供您尝试过的内容?