我有一段代码可以从远程服务器或本地磁盘检索文件。
我理解URLConnection
可以处理这两种情况,所以如果我使用FileInputStream
来读取本地文件而不是将其交给{{1},我想知道是否有任何性能优势从磁盘读取?
答案 0 :(得分:2)
不,使用FileInputStream
而不是URLConnection
没有性能优势(除非你计算一些额外方法调用的毫秒数)。
通过file://
URL读取文件最终会得到FileURLConnection
(请注意,这不是官方Java库规范的一部分,只是基于Sun的JRE)。如果您查看代码,您将看到它正在创建FileInputStream
以使用磁盘上的文件。所以除了在堆栈中向下走几层之外,代码最终完全相同。
您希望直接使用FileInputStream
的原因是为了清晰您的代码。将文件路径转换为URL有点难看,如果您只是处理文件,那就很难做到。
在您的情况下,某些时候 需要使用网址,您可以使用文件网址,仅使用网址非常方便。我想你已经抽象了几乎所有有趣的逻辑来处理URL,并且可以做其他地方构建文件或非文件URL的丑陋业务。
答案 1 :(得分:0)
FileInputStream从文件系统中的文件获取输入字节。 FileInputStream用于读取原始字节流,例如图像数据。
FileReader用于读取字符流。
通常,创建与URL的连接是一个多步骤过程:
我认为一个好的经验法则是尽可能使用最简单的代码(对象)以保持最高效。想极简主义!
P.S。不确定你是在移动文件还是阅读其内容。