在java桌面应用程序中,我经常使用对文件的引用。
到目前为止,我已经尽快构建了File对象,然后将File对象传递给方法,例如:
public void loadConfig(File configFile) {
...
}
我正在评估用File
广泛替换URL
这主要是因为URL可以轻松地将文件引用到zip或jar文件中。
URL是否存在SecurityManager问题(当引用本地文件时)File类不会对同一文件有什么问题?
由于这种重构会影响接口而不仅仅是实现,我对此“替换”的任何其他考虑也感兴趣。
答案 0 :(得分:3)
您可能遇到的主要问题:
MalformedURLException
。文件构造函数不会抛出此异常。openStream
或openConnection
个方法;使用File,您可能会使用基于文件的流(例如FileInputStream
)。URL类确实会进行一些SecurityManager检查,但鉴于它是桌面应用程序,您是否无法控制安全管理器设置?
除此之外,由于URL是文件的超集(因为它处理file:
协议等),您应该能够以相同的方式使用它。另一个选项 - 而不是传递文件或URL - 是尽可能使用流,因为您可以根据需要使用文件或URL来生成流。
答案 1 :(得分:1)
URL是否存在SecurityManager问题(当引用本地文件时)File类不会对同一文件有什么问题?
没有
沙盒应用。只能访问自己的类路径中的URL,但任何可以创建和使用File
的内容都以所有权限运行。