繁体   English   中英

Linux上的Java File.toURI()问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM