java.net.MalformedURLException:未知协议:f

java.net.MalformedURLException:未知协议:f,java,histogram,Java,Histogram,我试图得到一个图像直方图使用此代码。通常,当输入url给出的图像时,它工作正常。但是当我从本地目录给出图像时 private BufferedImage getImage() { try { return ImageIO.read(new URL( "F:/test.jpg")); } catch (IOException e) { e.printStackTrace(System.err); } retur

我试图得到一个图像直方图使用此代码。通常,当输入url给出的图像时,它工作正常。但是当我从本地目录给出图像时

private BufferedImage getImage() {
    try {
        return ImageIO.read(new URL(
            "F:/test.jpg"));
    } catch (IOException e) {
        e.printStackTrace(System.err);
    }
    return null;
}
这是个例外

 java.net.MalformedURLException: unknown protocol: f 

如何解决此异常并获取图像的直方图。jpg不是有效的URL。对于文件,URL是
file://F:/test.jpg

其中
文件
是协议

协议无效

如果需要从文件系统加载文件,则需要使用

文件URI的形式为
file://host/path

其中,
host
是可访问路径的系统的完全限定域名,路径是一个分层目录路径,形式为
目录/目录/../name
。如果省略了
host
,则将其视为“
localhost
”,从中解释URL的机器

因此,url应该是:

file://F:/test.jpg

虽然其他答案在技术上可以解决您的问题,但您不应该为此使用
URL
read
函数还有其他签名,您可以使用以下任一签名:

return ImageIO.read(new File("F:/test.jpg"));
// or
return ImageIO.read(new FileInputStream("F:/test.jpg"));