栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将URL转换为普通的Windows文件名Java

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将URL转换为普通的Windows文件名Java

当前的建议(使用JDK
1.7+)是转换URL→URI→路径。因此,要将URL转换为File,您应该说

Paths.get(url.toURI()).toFile()
。如果您还不能使用JDK
1.7,我建议您使用
new File(URI.getSchemeSpecificPart())


转换文件→URI:首先,我将向您展示一些可能在Java中获得的URI的示例。

    -classpath URLClassLoader File.toURI()     Path.toUri()C:Program Files          file:/C:/Program%20Files/ file:/C:/Program%20Files/   file:///C:/Program%20Files/C:main.c++    file:/C:/main.c++         file:/C:/main.c++file:///C:/main.c++\VBOXSVRDownloads       file://VBOXSVR/Downloads/ file:////VBOXSVR/Downloads/ file://VBOXSVR/Downloads/C:Résume.txt  file:/C:/R%c3%a9sume.txt  file:/C:/Résume.txt         file:///C:/Résume.txt\?C:Windows (non-path) file://%3f/C:/Windows/    file:////%3F/C:/Windows/    InvalidPathException

关于这些URI的一些观察:

  • URI规范为 RFC 1738:URL,由RFC 2396:URI取代,并由RFC 3986:URI取代。(WHATWG也具有URI规范,但未指定文件URI的解释方式。)调用URI时,路径中的任何保留字符都用百分号引起来,而URI中的非ASCII字符则用百分号引起来。 toASCIIString()。
  • File.toURI()比Path.toUri()更糟糕,因为File.toURI()返回不寻常的非RFC 1738 URI(提供file:/而不是file:///),并且不会根据UNC路径格式化URI 微软的首选格式。但是,这些UNC URI都不在Firefox中起作用(Firefox需要file://///)。
  • 路径比文件更严格;您不能从“ 。”前缀构造无效的路径。“这些前缀不用作路径本身的一部分,”但可以将它们传递给Win32 API。

转换URI→文件:让我们尝试将前面的示例转换为文件:

      new File(URI) Paths.get(URI)new File(URI.getSchemeSpecificPart())file:///C:/Program%20Files  C:Program Files         C:Program Files         C:Program Filesfile:/C:/Program%20Files    C:Program Files         C:Program Files         C:Program Filesfile:///C:/main.c++         C:main.c++   C:main.c++   C:main.c++file://VBOXSVR/Downloads/   IllegalArgumentException \VBOXSVRDownloads     \VBOXSVRDownloadsfile:////VBOXSVR/Downloads/ \VBOXSVRDownloads      \VBOXSVRDownloads     \VBOXSVRDownloadsfile://///VBOXSVR/Downloads \VBOXSVRDownloads      \VBOXSVRDownloads     \VBOXSVRDownloadsfile://%3f/C:/Windows/      IllegalArgumentException IllegalArgumentException \?C:Windowsfile:////%3F/C:/Windows/    \?C:WindowsInvalidPathException     \?C:Windows

同样,使用

Paths.get(URI)
优先于
new File(URI)
,因为Path能够处理UNC
URI并拒绝带有?前缀的无效路径。但是,如果您不能使用Java 1.7,请
newFile(URI.getSchemeSpecificPart())
改为说。

顺便说一句,千万 不能

URLDeprer
解码文件URL。对于包含“ +”的文件,例如“ file:/// C:/main.c++”,
URLDeprer
请将其转换为“ C:
main.c”!
URLDeprer
仅用于解析URI的查询(
param=value&param=value
)中的application /
x-www-form-urlenpred HTML表单提交,而不用于取消引用URI的路径。

2014-09:编辑添加示例。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569396.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号