[英]Java File.toURI() issue on Linux
我正在尝试获取要放入HTML文档中的文件的URI,然后再处理该文件以从该HTML中读取图像位置(位于系统临时目录中)并对图像进行一些处理。
它在Windows上可以正常工作,但是在Linux上,我遇到了无法找到HTML图像位置进行后续处理的问题。 我认为问题如下...
在Windows上,File.toURI()。toString()命令正在返回(对于C:\\ temp \\ image.jpeg):
文件:/ C:/temp/image.jpeg
因此,在Linux上,它大概会返回(对于/tmp/image.jpeg):
文件://tmp/image.jpeg
HTML解析器将其解释为tmp / image.jpeg(即相对路径),因此无法找到。
是否有一个简单的解决方法,还是我需要手动强制URI正确(我猜file:///tmp/image.jpeg和file:// C:/temp/image.jpeg)?
您可以尝试执行以下操作:
String imageUri = File.toUri().toString().replaceFirst("^file:/", "");
正则表达式应该可以帮助您在Windows和Linux上获取文件资源
正如我在对您的问题的评论中提到的: 不要发布file:
HTML文档的URI。
请相对于网站的根目录使用相对URI或绝对URI 。
Google详细介绍了发布网站时相对和绝对URI的区别。
现在,如果您急切地使用file:URIs ,那么您可能想要尝试获取规范路径。 地狱,规范的路径是人们想要用来发布文件位置的首选路径类型(如我之前提到的在网络上发布时除外):
// java-like pseudocode:
String myFile = ... // some path, relative or absolute, to a file in an accessible file system
URI = (new File(myFile)).getCanonicalFile().toURI();
检查File / getCanonicalFile / getCanonicalPath上的Oracle / Sun javadoc信息以了解详细信息。
由于您提到的是HTML解析器将文件视为URI,所以这可能仍不能解决问题:URI是相对的(但您没有提及正在使用的HTML解析器 。)
最终,您可以发布相对于文档根目录的URL,而不是使用file:
URI。 这些URI绝不会那样使用。
您要提供绝对路径,需要将图像导入到您的项目中,然后将您项目中的相对路径提供给代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.