Java File.toURL()已弃用?
为什么不推荐使用函数Java File.toURL()已弃用?,java,url,io,Java,Url,Io,为什么不推荐使用函数java.io.File.toURL()?我需要向接受URL对象的Toolkit.createImage()传递一个URL。Javadoc建议我使用File.toURI().tour()。然而: C:\Documents and settings\Administrator\… 变成: C:\Documents%20和%20设置\管理员\… 这显然是一个无效的文件位置。我发现File.toURL()可以创建不带转义的URL,但它已被弃用。虽然它可以工作,但我害怕使用不推荐使用
java.io.File.toURL()
?我需要向接受URL对象的Toolkit.createImage()
传递一个URL。Javadoc建议我使用File.toURI().tour()
。然而:
C:\Documents and settings\Administrator\…
变成:
C:\Documents%20和%20设置\管理员\…
这显然是一个无效的文件位置。我发现File.toURL()可以创建不带转义的URL,但它已被弃用。虽然它可以工作,但我害怕使用不推荐使用的函数。什么样的方法没有被弃用,却能做同样的事情
编辑:现在我的代码如下所示:
spriteImage1 = tkit.createImage(new File("./images/sprite1.png").getCanonicalFile().toURL());
编辑:我需要从.jar文件外的文件夹创建一个图像。我需要一个相对位置(“./images/sprite1.png”)。方法createImage(字符串)当我尝试给它一个相对路径时抛出一个异常。 < p>它不能正确处理特殊字符,如,使用它不是更容易吗?< /p> < p>为什么不使用文件名来代替<代码>创建图像< /代码>函数? < p>可以考虑使用替代。 用法:
URL url2=file.toURI().toURL();
我认为您必须以这种方式编写url
C:/Documents and settings/Administrator/
不是在这个地方
C:\Documents and settings\Administrator
我认为这个问题的正确答案就是在这个链接中暴露出来的答案 正如上面的链接所示,正确的方法是:
// Supposing f is the referenced file in code and we want to
// get an URL instance without deprecation warnings.
URL externalForm = f.toURI().toURL();
对于MalformedURLException没有捕获,因为问题是关于方法文件.toURL()的弃用
希望这能有所帮助。我一点也不清楚为什么您认为转义版本是错误的。诚然,我可能期望+而不是%20,但我希望它仍然有效。第二个不应该是吗file:///C:/Documents%20and%20settings/Administrator/... ?实际上,第二个版本在传递给createImage()时给了我一个异常,而第一个版本运行良好。是的,是的file:///...Out 有趣的是,例外是什么?当我试图绘制createImage()加载的不存在的图像时,这是一个NullPointerException。