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