使用FileInputStream和URLConnection读取文件

时间:2013-05-31 01:08:19

标签: java performance urlconnection fileinputstream

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

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

2 个答案:

答案 0 :(得分:2)

不,使用FileInputStream而不是URLConnection没有性能优势(除非你计算一些额外方法调用的毫秒数)。

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

您希望直接使用FileInputStream的原因是为了清晰您的代码。将文件路径转换为URL有点难看,如果您只是处理文件,那就很难做到。

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

答案 1 :(得分:0)

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

FileReader用于读取字符流。

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

  1. 通过在URL上调用openConnection方法来创建连接对象。
  2. 操作设置参数和一般请求属性。
  3. 使用connect方法实现与远程对象的实际连接。
  4. 远程对象变得可用。可以访问标题字段和远程对象的内容。
  5. 我认为一个好的经验法则是尽可能使用最简单的代码(对象)以保持最高效。想极简主义!

    P.S。不确定你是在移动文件还是阅读其内容。