Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java File.toURL()已弃用?_Java_Url_Io - Fatal编程技术网

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。