Escape result of FileLocator.resolve(url)(FileLocator.resolve(url) 的转义结果)
问题描述
FileLocator.resolve(url) 方法可用于将地址 bundleentry://something/somewhere/x.txt 转换为适合 <代码>/mnt/foo/somewhere/x.txt.
The method FileLocator.resolve(url) can be used to translate an address bundleentry://something/somewhere/x.txt to a proper file URL for /mnt/foo/somewhere/x.txt.
但是,这也记录在 https://bugs.eclipse.org/bugs/show_bug.cgi?id=145096,URL 没有转义.例如,如果包含引用包的 Eclipse 安装位于包含空格的目录中,则 FileLocator.resolve 返回的 URL 仍然包含空格并调用 url.toURI()代码>因此而失败.
However, which is also documented at https://bugs.eclipse.org/bugs/show_bug.cgi?id=145096, the URL is not escaped. As an example, if the Eclipse installation containing the referenced bundle is in a directory containing a space, the URL returned by FileLocator.resolve still contains the space and calling url.toURI() fails because of that.
- 如何手动转义 URL 中的所有个必要字符?
- 如何根据相对于当前路径的路径获取
File对象捆绑?
- How can I manually escape all necessary characters in the URL?
- How can I get a
Fileobject based on a path relative to the current bundle?
作为参考,如果该文件位于包含空格的目录中,则尝试在插件的 .jar 文件中查找目录 dir 时失败的代码如下:
As reference, here is the code that fails when trying to find the directory dir inside my plugin's .jar file if that file is in a directory containing a space:
final IPath pathOfExampleProject = new Path("dir");
final Bundle bundle = Platform.getBundle(AproveIDs.PLUGIN_ID);
final URL url = FileLocator.find(bundle, pathOfExampleProject, null);
final URL url2 = FileLocator.toFileURL(url);
url2.toURI(); // Illegal character in path at index [...]
推荐答案
我刚找到这段代码:
http://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/model/BundledSystemLibrary.java?r=2057
相关行确实有帮助:
// We need to use the 3-arg constructor of URI in order to properly escape file system chars.
URI resolvedUri = new URI(resolvedUrl.getProtocol(), resolvedUrl.getPath(), null);
这篇关于FileLocator.resolve(url) 的转义结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:FileLocator.resolve(url) 的转义结果
基础教程推荐
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01
- 如何对 Java Hashmap 中的值求和 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- 修改 void 函数的输入参数,然后读取 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
