有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在Java中将网络路径转换为URL

我已经在整个互联网上搜索了这个问题,但没有找到答案。我在网络中有一个文件,我想用它创建一个Itext图像,为此,我必须将其路径转换为URL。问题是,当我使用path.toURI().toURL()时,它会将我的项目路径附加到URL,这样我的URL就会以C://开头,这将不起作用。 有没有一种方法可以在java中将字符串转换为文件URL? 我试过:

        String paths = "‪\\\\DESKTOP-A11F076\\Users\\Benson Korir\\Desktop\\walgotech\\passport.jpg";
        String first = "file:" + paths.replaceAll("\\\\", "//").replaceAll("////", "//");
        String second = "file://desktop-a11f076//Users//Benson Korir//Desktop//walgotech//passport.jpg";
        System.out.println(first);
        System.out.println(second);

我直接从浏览器中复制的第二个字符串工作正常。有趣的是,这两个字符串输出相同的东西,但第一个字符串在这里使用时会出现错误:

            Image image1 = Image.getInstance(second);

我得到的错误如下:

java.io.FileNotFoundException: ‪\DESKTOP-A11F076\Users\Benson Korir\Desktop\walgotech\passport.jpg (The system cannot find the path specified)

共 (1) 个答案

  1. # 1 楼答案

    如果我正确地理解了您的要求,那么您的路径是一个UNC文件名,这是SMB路径的缩写形式,DESKTOP-A11F076是远程计算机,\Users\Benson Korir\Desktop\walgotech\passport.jpg是该计算机上文件的路径

    如果我的假设是正确的,我的理解是你的URL必须是这样的:smb://‪DESKTOP-A11F076/Users/Benson Korir/Desktop/walgotech/passport.jpg

    据我所知,Java java.io.File对象能够处理UNC文件名(this article也暗示了这一点),但在将其转换为URI时,它会首先尝试将其设置为绝对值,在您的情况下,它会失败

    我通常尽可能避免在Windows上工作,因此我没有环境来验证这一点