2

我有一段代码可以从远程服务器或本地磁盘检索文件。

我知道这URLConnection可以处理这两种情况,所以我想知道如果我曾经FileInputStream读取本地文件而不是将其交给URLConnection从磁盘读取,是否有任何性能优势?

4

2 回答 2

2

FileInputStream不,使用over a没有性能优势URLConnection(好吧,除非您计算少量额外方法调用的毫秒数)。

通过file://URL 读取文件最终会得到一个FileURLConnection(请注意,这不是官方 Java 库规范的一部分,只是基于 Sun 的 JRE)。如果您查看代码,您会看到它正在创建一个FileInputStream用于处理磁盘上的文件。因此,除了在堆栈中向下走几层之外,代码最终完全相同。

您想FileInputStream直接使用 a 的原因是为了让您的代码更清晰。将文件路径转换为 ​​URL 有点难看,如果您只打算使用文件,这样做会让人感到困惑。

在您的情况下,有时您需要使用 URL,您可以使用文件 URL 并使用 URL,这非常方便。我想您已经抽象出几乎所有有趣的逻辑来处理 URL,并且可以在其他地方构建文件或非文件 URL 的丑陋业务。

于 2013-05-31T01:52:56.333 回答
0

FileInputStream 从文件系统中的文件获取输入字节。FileInputStream 用于读取原始字节流,例如图像数据。

FileReader 用于读取字符流。

通常,创建到 URL 的连接是一个多步骤的过程:

  1. 连接对象是通过在 URL 上调用 openConnection 方法来创建的。
  2. 设置参数和一般请求属性被操纵。
  3. 与远程对象的实际连接是使用 connect 方法建立的。
  4. 远程对象变为可用。可以访问远程对象的标头字段和内容。

我认为一个好的经验法则是尽可能使用最简单的代码(对象)以保持最高效。认为极简主义!

PS 不确定您是否只是在移动文件或读取其内容。

于 2013-05-31T01:42:46.217 回答