如何在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 楼答案
如果我正确地理解了您的要求,那么您的路径是一个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上工作,因此我没有环境来验证这一点