URI路径不是绝对异常java(不是android)

Jür*_* K. 5 java uri exception file path

我有以下一段源代码

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));
Run Code Online (Sandbox Code Playgroud)

所以File获取的路径是正确的.图像也正确缓冲.现在我的问题是我得到以下异常

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

为什么我的道路不是绝对的?我该怎么做呢?

如果我改变这样的路径:

String string = "C:'\'Users'\'Jurgen'\'newFile'\'myProject'\'pic.png";
Run Code Online (Sandbox Code Playgroud)

也试过这样的

String string = "C:/Users/Jurgen/newFile/myProject/pic.png";
Run Code Online (Sandbox Code Playgroud)

然后我得到一个新的例外

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

PS没有使用uri的android包

在此先感谢=)

Sta*_*lav 6

您正在尝试创建统一的资源标识符,但名称应遵循url conventions。这意味着,有必要提供一个方案(查看此处,查看所有可用的方案)。因此,在您的情况下,您必须使用字符串创建 URI,例如file:/pic.png或可能是其他方案。

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

String string = "file:/C:/Users/Jurgen/newFile/myProject/pic.png";
Run Code Online (Sandbox Code Playgroud)