Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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_Classpath_Bufferedimage - Fatal编程技术网

如何从任何计算机读取文件(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对当前工作目录只有一种感觉(即
),它不一定与任何给定类或资源文件的位置有任何特定关系。