目前我的程序中有这样的代码:
BufferedImage ReadPicture = null;
try {
ReadPicture = ImageIO.read(new File("C:/Users/John/Documents/NetBeansProjects/Program5/build/classes/Program5/Pictures/TestPicture.png"));
} catch (IOException e) {
}
如果我将文件编译为 jar 并将其提供给其他人,则该程序将无法工作,因为类路径特定于我的计算机。如何更改访问文件/图像的方式,使其适用于所有计算机?
最佳答案
特别是对于ImageIO
,如果您总是想从类路径读取图像,而不考虑类路径实际上是什么,那么您可以这样做:
BufferedImage readPicture = null;
URL imageUrl = getClass().getClassLoader().getResource(
"/Program5/files/Pictures/TestPicture.png");
// Or
// InputStream imageStream = getClass().getClassLoader().getResourceAsStream(
// "/Program5/files/Pictures/TestPicture.png");
// null if not found
try {
readPicture = ImageIO.read(imageUrl);
// null if the image format is unrecognized
} catch (IOException e) {
// ...
}
这依赖于 ImageIO
可以通过 URL 获取图像这一事实。即使图像与您的类一起(或不与类一起)打包在 Jar 文件中,也可以使用此方法。
关于java - 如何从任何计算机读取文件 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32789681/