File.toURL()已弃用?

Luc*_*cky 17 java io url

为什么该函数java.io.File.toURL()已弃用?我需要传递一个Toolkit.createImage()接受URL对象的URL.Javadoc建议我使用File.toURI().toURL().然而:

C:\Documents and settings\Administrator\...

变为:

C:\Documents%20and%20settings\Administrator\...

这显然是一个无效的文件位置.我发现File.toURL()创建了URL而没有转义,但它已被弃用.虽然它有效但我害怕使用已弃用的函数.什么是不被弃用的方法做同样的事情?

编辑:现在我的代码看起来像:

spriteImage1 = tkit.createImage(new File("./images/sprite1.png").getCanonicalFile().toURL());
Run Code Online (Sandbox Code Playgroud)

编辑:我需要从.jar文件外的文件夹创建一个图像.我需要一个相对位置("./ images/sprite1.png").当我尝试为它提供相对路径时,方法createImage(String)会抛出异常.

ks.*_*ks. 34

使用:URL url2 = file.toURI().toURL();

  • 不一样,因为空格得到了URL编码. (2认同)

Kre*_*dns 14

根据此错误,它无法正确处理特殊字符.


Pes*_*sto 5

为什么不直接使用带有String文件名的createImage函数?


小智 5

我认为这个问题的正确答案是这个链接中公开的答案http://www.jguru.com/faq/view.jsp?EID=1280051

如上面的链接所示,正确的方法是:

// Supposing f is the referenced file in code and we want to
// get an URL instance without deprecation warnings.
URL externalForm = f.toURI().toURL();
Run Code Online (Sandbox Code Playgroud)

MalformedURLException 没有捕获,因为问题是关于方法 file.toURL() 的弃用。

希望这会有所帮助。