在 Java 中检索正确的文件 URI
Retrieve correct file URI in Java
java.net.URI 的 .toString 方法没有正确编码本地文件 URL。
scala> new java.io.File("/tmp/d.jpg").toURI.toString
res0: String = file:/tmp/d.jpg
为什么没有生成URI?
file:///tmp/d.jpg
编辑
我在 Linux 上将文件传递给 shell 时发现了这一点,最终执行转换 (ImageMagick),它无法处理单斜杠版本,file:/tmp/d.jpg。当我传递一个由 java.net.URI 正确转换为字符串的 http URI 时,它会起作用。我想 convert 没有严格遵循 RFC。
在原来的post基础上添加的link,回答了我的问题。
为了能够将 URI 传递给 shell(转换),我将这样做(注意,它是 Scala 代码):
private def getSourceForShell(source: URI): String = {
if (source.getScheme == "file") {
"file://" + source.toString
} else {
source.toString
}
}
我想这是一个解决转换的方法,它不支持单斜杠(无权限)URI 格式。
java.net.URI 的 .toString 方法没有正确编码本地文件 URL。
scala> new java.io.File("/tmp/d.jpg").toURI.toString
res0: String = file:/tmp/d.jpg
为什么没有生成URI?
file:///tmp/d.jpg
编辑 我在 Linux 上将文件传递给 shell 时发现了这一点,最终执行转换 (ImageMagick),它无法处理单斜杠版本,file:/tmp/d.jpg。当我传递一个由 java.net.URI 正确转换为字符串的 http URI 时,它会起作用。我想 convert 没有严格遵循 RFC。
在原来的post基础上添加的link,回答了我的问题。
为了能够将 URI 传递给 shell(转换),我将这样做(注意,它是 Scala 代码):
private def getSourceForShell(source: URI): String = {
if (source.getScheme == "file") {
"file://" + source.toString
} else {
source.toString
}
}
我想这是一个解决转换的方法,它不支持单斜杠(无权限)URI 格式。