使用Java在URL中跳转一个文件夹

时间:2014-07-07 16:03:02

标签: java

我有一个URL,如下所示:

String jarFilePath = getClass().getProtectionDomain().getCodeSource().getLocation()

这将为我提供jar文件的完整路径。现在我如何跳过一个文件夹并附加一些其他路径?例如,如果jarFilePath类似于:

c:/path/to/jar/file.jar

我想跳过一个文件夹并附加另一个相对路径,如下所示:

c:/path/to/resources/path/to/resources/

文件夹资源和jar在文件系统中位于同一目录级别。

4 个答案:

答案 0 :(得分:1)

File f = new File("C:/path/to/jar/file.jar");
File dest = new File(f.getParentFile().getParentFile(), "resources/path/to/resources");

答案 1 :(得分:1)

只需使用File-Object,即可轻松完成更多操作:     import java.io.File;

String pathname = "c:/path/to/jar/file.jar";
File f = new File(pathname);
String p = f.getParent();

答案 2 :(得分:0)

你有几种方法。

  • 您可以将路径拆分为其元素并重建它,直到array.length -3(-1为文件名,-2为最后一个文件夹)
  • 您可以简单地删除该文件并添加另一个../(这意味着:“返回一个目录”)(那将是这样的:c:/path/to/jar/../resources/path/to/resources/
  • 您可以使用正则表达式来删除最后一个文件夹和文件。像/[^/]+/[^/]+$
  • 之类的东西

答案 3 :(得分:0)

尝试使用File对象:

File jarFile = new File(jarFilePath);
File newFolder = new File( jarFile.getParentFile().getParentFile(), "resources/path/to/resources");

如果要将路径用作字符串,请尝试使用Apache Commons IO' FilenameUtils

String resourcesPath = FilenameUtils.normalize( FilenameUtils.getPath(jarFilePath) + "/../resources/path/to/resources");