2009-04-22 136 views
11

为什么函数java.io.File.toURL()不推荐使用?我需要传递一个URL到Toolkit.createImage(),它接受一个URL对象。 Javadoc建议我使用File.toURI().toURL()。但是:File.toURL()已弃用?

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

变为:

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

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

编辑:现在我的代码如下所示:

spriteImage1 = tkit.createImage(new File("./images/sprite1.png").getCanonicalFile().toURL()); 

编辑:我需要超出了我的.jar文件创建一个文件夹中的图片。我需要一个相对位置(“./images/sprite1.png”)。当我尝试给它一个相对路径时,createImage(String)方法抛出一个异常。

+1

这对我来说并不是显而易见的,你为什么认为逃跑的版本是错误的。无可否认,我可能会期望+而不是%20,但我希望它仍然有效。 – 2009-04-22 14:18:33

+4

不应该是第二个文件:/// C:/ Documents%20and%20settings/Administrator/...? – Powerlord 2009-04-22 14:18:47

回答

27

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

0

我认为你必须写的网址以这种方式

C:/ Documents和设置/管理/ ...

在此

C: \文件和设置\管理员...

3

我认为正义牛逼的回答这个问题是一个在这个环节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(); 

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

希望这有助于。