Java 本地文件对象的绝对路径
因此,我正在考虑将.jar移植到可执行文件中,并在这样做之前清理一下我的代码。现在我有以下几点: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
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"));