有没有简单的方法将包含双字节字符的URL转换为绝对路径?
我问的原因是我想找到这样的资源:
URL url=getClass().getResources("/getresources/test.txt");
String path=url.toString();
File f=new File(path);
程序找不到该文件。我知道我可以转换的所有空间的路径都包含'%20',但我真正的问题是我使用的是日语操作系统,当程序jar文件在日文文本的目录中时(例如デスクトップ)我得到{ {3}}目录名称, 像这样:
%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97
我想我可以获得UTF-8字节代码并将其转换为正确的字符来查找文件,但我想知道是否有更简单的方法来执行此操作。任何帮助将不胜感激。
NT
答案 0 :(得分:34)
URL url=getClass().getResource("/getresources/test.txt");
File f=new File(url.toURI());
答案 1 :(得分:5)
File
有一个构造函数为这种情况采用java.net.URI
类型的参数:
File f = new File(url.toURI());
答案 2 :(得分:2)
如果您有兴趣从URL获取Path
,则可以执行以下操作:
Path p = Paths.get(url.toURI());
答案 3 :(得分:0)
适用于 Java 11 或更高版本的用户的另一种选择:
Path path = Path.of(url.toURI());
或作为字符串:
String path = Path.of(url.toURI()).toString();
如果 URL 保证是文件 URL,则上述两种方法都会抛出一个 URISyntaxException
,可以安全地忽略该 apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my
spec:
hosts:
- "*"
gateways:
- my-gateway
http:
- match:
- uri:
prefix: /zzz
rewrite:
uri: /products
route:
- destination:
port:
number: 443 # here
host: my-site.example.com
。