Vis*_*hal 30 java url classloader
我有以下代码行.
sysLoader = (URLClassLoader)Thread.currentThread().getContextClassLoader();
url = sysLoader.getResource("tempFile.txt");
Run Code Online (Sandbox Code Playgroud)
它给出了一个奇怪的问题.如果我从路径中没有空格的路径(文件夹名称)运行它,那么它运行正常.但是如果路径包含任何空格(行"c:\ New Foler ...")那么它就不起作用了.
怎么解决这个?
编辑:更详细 - 我检查了sysloader对象.
sysloader - > UCP - > path
是否有一个字符%20而不是空格的路径
因此,所有URL都为空.
怎么解决这个?
小智 39
这是Sun/Oracle所知,他们的建议是使用URI对象来删除%20个字符:
而不是这样做:
FileInputStream fis = new FileInputStream(url.getFile());
Run Code Online (Sandbox Code Playgroud)
您可以通过首先将URL转换为URI来强制解码任何%-escaped字符,然后使用URI的路径组件作为文件名:
URI uri = new URI(url.toString());
FileInputStream fis = new FileInputStream(uri.getPath());
Run Code Online (Sandbox Code Playgroud)
小智 10
使用URLDecoder.decode()方法%20用空格替换字符.
String path = URLDecoder.decode(url.getPath(), "UTF-8");
还请记住,当资源位于jar文件中时,您必须以不同的方式处理它.请参阅此处:如何访问jar中的资源,它可以存在于多个jar中
| 归档时间: |
|
| 查看次数: |
9775 次 |
| 最近记录: |