java - 如何从任何计算机读取文件 (Java)

标签 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 (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/

相关文章:

java - 获取 java.lang.ClassNotFoundException 即使我已经使用 -cp 指定了正确的 jar

java - Java 内连接语句

php - 将记录从 mysql 导出到文本文件时结果变为空白

c++ - 从 C++ 中的给定文件点读取目录

Android打开文件并让用户选择哪个程序可以打开它

java - 如何自定义独立netbeans应用程序的java选项?

java - 如何在 Eclipse 插件中获取 IJavaProject 的类路径(作为文件路径)?

java - 从单链表打印节点

java - 确定给定 IP 是否为 Web 主机

java - JDBC : trying to get UserName column with SQL Query