如何从任何计算机读取文件(Java)
目前,我的程序中有如下代码:如何从任何计算机读取文件(Java),java,file,classpath,bufferedimage,Java,File,Classpath,Bufferedimage,目前,我的程序中有如下代码: BufferedImage ReadPicture = null; try { ReadPicture = ImageIO.read(new File("C:/Users/John/Documents/NetBeansProjects/Program5/build/classes/Program5/Pictures/TestPicture.png")); } catch (IOExcep
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并将其交给其他人,程序将无法工作,因为类路径是特定于我的计算机的。如何更改访问文件/图像的方式,使其能在所有计算机上运行 您可以在项目中添加名为“文件”的文件夹或任何您想要的文件夹。您可以在其中创建子目录并在其中排列文件。当您与其他人共享时,这些子目录将可用。在下面的代码中,“.”表示工作目录。因此,请确保您提供的目录结构正确。请尝试类似的操作
BufferedImage ReadPicture = null;
try {
ReadPicture = ImageIO.read(new File("./files/Pictures/TestPicture.png"));
} catch (IOException e) {
}
另见
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文件中,也可以使用这种方法,包括类(或非类)。一种方法是,接受路径作为命令行参数。您可以从System.getProperties()中指示的目录之一创建一个公共子目录。从相对于
的路径读取很容易出错。整个VM对当前工作目录只有一种感觉(即
),它不一定与任何给定类或资源文件的位置有任何特定关系。