【问题标题】:Java ImageIO.read(File vs URL)Java ImageIO.read(文件与 URL)
【发布时间】:2015-06-27 19:12:39
【问题描述】:

根据 API,Java 的 ImageIO (javax.imageio.ImageIO).read() 方法提供了几个重载方法。

其中两种方法是:

ImageIO.read(File input) 
ImageIO.read(URL input)

Oracle 教程网站使用从文件读取方法ImageIO.read(File input)。但是我看到这里的程序员编写的许多示例更喜欢使用 URL 方法ImageIO.read(URL input)

示例:

img = ImageIO.read(new File("myImage.png"));
                        vs
img = ImageIO.read(getClass().getResource("images/myImage.png"));

我的问题是:如果我只是为 Java 桌面应用程序(而不是 Java 小程序)编码。与其他方法相比,使用 URL 方法有显着优势吗?


注意:SO中有一个类似标题的帖子:Using URL or File (in ImageIO.read)

但是这个问题专门针对IDE。但我并不是根据任何特定的 IDE 来询问,但一般来说,一个比另一个有什么突出的优势吗?

【问题讨论】:

    标签: java swing file url javax.imageio


    【解决方案1】:

    ..两者相比有什么突出的优势吗?

    URL 可以引用 Internet 上的某个位置、用户本地文件系统上的文件或 Jar 文件中的资源 -

    File 可以引用用户本地文件系统上的文件,而且.. 就是这样。

    所以,除非需要对资源进行读/访问,否则我会使用 URL,因为它更通用。

    【讨论】:

    • 所以唯一的优点是通用性,也许使用 URL 方法也更安全,因为它还可以读取嵌入式资源,例如来自 JAR。我这样说对吗?
    • “所以唯一的优势就是多功能性..”想要多少优势? 一个就足以让我找到 URL。 “..也许它更安全..”我称之为“前瞻性思维”。毕竟,如果应用程序。变得分布式(通常作为 Jar)。 File 将非常可靠地失败。与URL 一样可靠。因此,与其说“更安全”不如说“没有完全损坏”。
    • 非常感谢您的回复。您能否也解释一下您的最后一句话So, unless read/write access is required to the resource, I'd go with the URL since it is more versatile 当需要写访问权限时,File 方法比URL 方法更好吗?
    • 我们不能打开一个输出流到URL,但是我们can to a File..如果代码需要写访问,URL不是一个选项。
    • 我喜欢你的回答,直截了当,直接回答了。
    【解决方案2】:

    将资源保存在存档中总是比将文件保存在文件系统中要好。假设您要分发JAR 文件。然后它将无法在其他计算机上正常工作。此外,可能会误删除这些文件。另一方面,JAR 档案是不可编辑的。保存在 JAR 中的更好选择。如果想从互联网上掉线,那就另当别论了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-27
      • 2012-08-16
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 2012-07-13
      • 1970-01-01
      相关资源
      最近更新 更多