2015-09-25 63 views
4

我有以下的源代码URI路径不是绝对的例外的Java(不是机器人)

import java.net.URI; 
import java.net.URISyntaxException; 

    File file = new File("pic.png"); 
    BufferedImage image = ImageIO.read(file); 
    String string = "pic.png"; 
//the code works fine until here 
    URI path = new URI(string); 
    File f = new File(path); 
    ColorProcessor image = new ColorProcessor(ImageIO.read(f)); 

件,使文件得到的路径是正确的。图像也被正确缓冲。 现在我的问题是,我收到以下异常

Exception in thread "main" java.lang.IllegalArgumentException: URI is not absolute 
    at java.io.File.<init>(Unknown Source) 

为什么我的路径不是绝对的?而且我怎么做是正确的?

如果我改变这样的路径:

String string = "C:'\'Users'\'Jurgen'\'newFile'\'myProject'\'pic.png"; 

也试过这样

String string = "C:/Users/Jurgen/newFile/myProject/pic.png"; 

然后我得到一个新的异常

Exception in thread "main" java.lang.IllegalArgumentException: URI is not hierarchical 
    at java.io.File.<init>(Unknown Source) 

附:不能与Android包工作URI

在此先感谢=)

回答

2

您要创建统一资源标识符,但名称应遵循url conventions。这意味着,有必要提供一个方案(看看here,看到所有可用的方案)。所以,你的情况,你必须创建与字符串的URI,如file:/pic.png或可能是一些其他计划。

至于你的完整路径,这是可以做到这样的:

String string = "file:/C:/Users/Jurgen/newFile/myProject/pic.png"; 
+0

你的回答非常完美。 Spasibo。 –

+0

还有一个问题,为什么你需要在路径前写上“file:”? –

+1

它决定了你可以处理这种资源的方式。在大多数情况下,它指的是网络协议,数据资源等。Gern geschehen) – Stanislav