java file 转URL_Java:如何从转义的URL获取文件?

我收到一个定位本地文件的URL(我收到的URL不在我的控制范围内)。 按照RFC2396中的定义有效地转义了URL。 如何将其转换为Java File对象?

有趣的是,URL getFile()方法返回的是字符串,而不是文件。

我创建了一个名为“ / tmp / some dir”的目录(在“ some”和“ dir”之间有一个空格字符),该目录通过以下URL正确定位:“ [file:/// tmp / some%20dir “](为清楚起见添加了引号)。

如何将该URL转换为Java文件?

为了提供有关我的问题的更多详细信息,以下打印为false:

URL url = new URL( "file:///tmp/some%20dir" );

File f = new File( url.getFile() );

System.out.println( "Does dir exist? " + f.exists() );

以下内容(用空格手动替换“%20”)打印为true:

URL url = new URL( "file:///tmp/some%20dir" );

File f = new File( url.getFile().replaceAll( "%20", " " ) );

System.out.println( "Does dir exist? " + f.exists() );

请注意,我不是在问为什么第一个示例打印为false或为什么第二个示例使用hacky replaceAll打印为true,而是在询问如何将转义的URL转换为Java File对象。

编辑:谢谢,这几乎是一个骗局,但不完全是。

愚蠢的是,我在URL类本身中寻找一个辅助方法。

从Java URL获取Java文件的预期工作如下:

URL url = new URL( "file:///home/nonet/some%20dir" );

File f = new File( URLDecoder.decode( url.getFile(), "UTF-8" ) );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值