Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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 本地文件对象的绝对路径_Java_File_Path - Fatal编程技术网

Java 本地文件对象的绝对路径

Java 本地文件对象的绝对路径,java,file,path,Java,File,Path,因此,我正在考虑将.jar移植到可执行文件中,并在这样做之前清理一下我的代码。现在我有以下几点: BufferedImage bgImg = null; //Grabs the background image try { bgImg = ImageIO.read(new File("")); } catch (IOException e1) { e1.printStackTrace(); } 我还可以使用其他几个图像: new Imag

因此,我正在考虑将.jar移植到可执行文件中,并在这样做之前清理一下我的代码。现在我有以下几点:

BufferedImage bgImg = null;
//Grabs the background image
    try {
        bgImg = ImageIO.read(new File(""));
    } catch (IOException e1) {
        e1.printStackTrace();
    }
我还可以使用其他几个图像:

new ImageIcon(getClass().getResource("imagename.png")));

但是,由于前者是一个文件对象,因此它不接受相同类型的参数。我想知道是否有类似的东西可以用于此,或者是否有其他方法使文件成为绝对文件,以便在移植到可执行文件时不会出现错误。谢谢

我不知道你想做什么。但是,您可以访问当前工作目录中的文件,路径前面有一个点

例如

使用
read(InputStream input)
方法代替
Class.getResourceAsStream()

例如:

bgImg = ImageIO.read(getClass().getResourceAsStream("imagename.png")); 

这几乎让我走上了正确的道路,它正在按预期工作@finaris
/
将与用户从哪个目录运行代码相关,除非您先更改工作目录。从可移植性的角度来看,您最好使用
getResources*
方法,这些方法将使用类路径instead@finaris阿拉斯泰尔是对的。“移植到可执行文件”意味着什么?一个可执行的jar(那么您可以像以前一样使用类路径资源)?还是非java可执行文件?在第二种情况下,大多数编程语言都会给您一个参数数组(就像在java main中一样)。有时候你可以访问索引为0的可执行文件的路径。是的,我本来想把我现有的类转换成一个.jar,然后用launch4j将其转换成本地windows可执行文件(多亏了你们,我现在已经成功地完成了lol)。这两种解决方案都有效,只是我需要从我的系统中删除一个相对路径,使其更直接地进入项目。空文件名肯定不起作用。文件将放在哪里?你有办法知道文件的路径吗?它总是在同一个目录中吗?或者它将位于与您知道的内容相关的目录中?是的,这是我的错误,在此之前,我已填充了一些内容(例如,使用相对目录访问文件的尝试失败,仅文件名等)。我最初把它和我的桌面的确切路径放在一起,但我把它移到了项目工作目录的一个文件夹中。这也行得通。现在回想起来,这更有意义(因为我在newfile()的参数中使用了它)。
bgImg = ImageIO.read(getClass().getResourceAsStream("imagename.png"));