java - 获取文件的绝对路径

标签 java absolute-path

所以我尝试使用 BufferedImages,因为它们更适合,而且加载它们似乎有点挑剔。我认为你需要绝对路径来加载它们,我已经尝试只执行 src/Package.image.png 但是当我导出到可运行的 jar 时它不起作用。这段代码在 eclipse 中工作,但由于某种原因,当我将其导出为 .jar 时,它不起作用。

package MainGame;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;

 public class GraphicsPath {





public static String getGraphicsPath(){


    String path = null;

    PrintWriter writer = null;
    try {
        writer = new PrintWriter("text.txt");
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    path = GraphicsPath.class.getProtectionDomain().getCodeSource().getLocation().getPath();  


    System.out.println(path);

    writer.println("orignal path    " + path);

    //FOR LINUX
    String[] splited = path.split("/");


    //FOR WINDOWS
    //String[] splited = path.split("\");
    writer.println(path);


    path = path.replace("%20", " ");

    path += "MainGame/";

    writer.println(path);
    writer.close();

    System.out.println(path);
    return path;

}

}

这是导出到 jar 时 text.txt 的内容

orignal path    ./
./
./MainGame/

这是仍在 java 项目中的 text.txt 的内容

orignal path    /home/mini/workspace/Pokemon%20Game/bin/
/home/mini/workspace/Pokemon%20Game/bin/
/home/mini/workspace/Pokemon Game/bin/MainGame/

最佳答案

有点太简单了,如果你把图像资源放在与GraphicsPath相同的目录中(都在类路径上),你可以这样做

BufferedImage image;
try (InputStream in = GraphicsPath.class.getResourceAsStream('my-image.png')) {
    if (in != null) {
        image = ImageIO.read(in );
    }
}

这就是您想要做的。如果您使用 EAR、WAR、JNLP、java -jar,或者抱歉,小程序,则使用路径可能无法工作。将资源与您知道存在的类捆绑在一起意味着您可以轻松访问这些资源。

现在,就您而言,它很笨重,因为它们不会被复制到您的 bin 目录中,因此您可能需要编辑用于开发的类路径。

关于java - 获取文件的绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30880014/

相关文章:

OnClickListener 中的 Java 语法困惑

android - 从 mediastore 的 URI 获取文件名和路径

reactjs - 绝对路径在 create-react-app 中不起作用

java - Selenium -Java : How to get absolute path to the file

java - 至少等待 Java 执行器的一个结果而不忙等待

java - 将应用程序转换为小程序

java - 空 `Optional` 类型的返回值应该是什么?

android - 有没有类似文件:///android_asset/that points to the apps directory?的路径

go - path.IsAb对于Windows路径返回不正确的结果

java - Selenium 网络驱动程序。错误 'org.openqa.selenium.StaleElementReferenceException: Element is no longer valid'