`
free_chenwei
  • 浏览: 25031 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

为什么获取路径空格变成了转义字符呢

    博客分类:
  • JAVA
 
阅读更多

 

下面展示一段代码
String path = getClass().getResource("/").getPath();

String path = getClass().getClassLoader.getResource("").getPath(); 
如果当前路径中包含了空格,则返回的路径字符串空格则被转义为(%20),如何解决这个问题呢?

String path = getClass().getResource("/").toURI().getPath();

String path = getClass().getClassLoader.getResource("").toURI().getPath(); 

也可以   java.net.URLDecoder.decode(path,"UTF-8 ");其他编码也是可以的哈。


到这个地方其实还有两个疑问1.getClass().getResource("/")与getClass().getClassLoader.getResource("/")有什么区别;
2.toURI()是什么;

 

Class().getResource与ClassLoader.getResource

Class().getResource,如果以 “/”开始则查找的路径是以classpath指向的绝对路径,包括jar文件路径,
如果不是以“/”开始,则查找的路径是从当前包路径开始查找,故jar文件查找不到


ClassLoader.getResource,查找的时候不能以“/”开头,查找的路径必须是绝对路径,查找范围包括jar文件


例子:可以在任意包路径下运行,然后根据结果得出以上结论

System.out.println(getClass().getResource(""));
System.out.println(getClass().getResource("/"));
System.out.println(getClass().getClassLoader().getResource(""));
System.out.println(getClass().getClassLoader().getResource("/"));

PS:查看一下Class.getResource源代码,会发现最终都是以ClassLoader.getResource获取资源位置

WEB应用中也可以这样用:
URL url = (URL) ServletActionContext.getServletContext().getResource("/WEB-INF/classes/config/chen wei/jdbc.properties");
// URL url = (URL)req.getSession().getServletContext().getResource("/WEB-INF/webinffile.txt");


URI与URL

ClassLoader.getResource("/").toURI()或Class().getResource("/").toURI()

getResource方法返回的是一个URL对象,toURI()是将RUL对象转换为URI对象.

查看了 URL和URI 对于getPath()方法的源代码,前者是没有对转义字符的解码的过程,而后则是有一个解码的过程
java.net.URLDecoder.decode;


URI与URL区别,我只是简单说说我简单的理解的

URI统一资源标识符,是针对整个资源的一个属性的管理对象,包括了URL

URL统一资源定位符,是对资源的管理,如获取资源文件流等

详细的自己看JDK API,估计看完了你脑壳也昏了

详细的是就自己看吧你看看额,我觉得还是不错的哟,肯定很好耍,

0
1
分享到:
评论

相关推荐

    url参数中有+、空格、=、%、、#等特殊符号的问题解决

    解决办法将这些字符转化成服务器可以识别的字符,对应关系如下:URL字符转义 用其它字符替代吧,或用全角的。 + URL 中+号表示空格 + 空格 URL中的空格可以用+号或者编码 / 分隔目录和子目录 / ? 分隔实际的...

    SQL Server查询中的特殊字符处理(C#代码)

    3. **遍历字符**:通过`ToCharArray()`方法将输入字符串转换为字符数组,然后遍历每个字符。 4. **字符处理**: - `[`:将其替换为`[[]`,以避免被解释为字符类的开始。 - `'`:在SQL中,单引号需要成对出现以...

    关于附件上传文件名包含特殊字符的问题解决办法

    当文件名中包含特殊字符时,这些字符可能会被服务器或浏览器误解析为其他指令或参数的一部分,从而导致下载链接失效。例如,`?`、`&`、`=`等字符常用于URL中的参数传递,而`、`>`、`"`等则可能会影响HTML的解析。...

    URL的参数中有加号传值变为空格的问题(URL特殊字符)

    转义字符的原因: 如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的作为另外一个参数来看待。例如 表单的action为list.jsf?act=Go&state=5 则提交时...

    C#字符串处理

    在C#中,使用反斜杠 `\` 进行转义字符的表示,如 `\n` 表示换行,`@` 符号用于创建原始字符串,忽略转义序列,便于包含路径或特殊字符的字符串。 #### 常见字符串处理方法 1. **字符串比较** 使用 `CompareTo` ...

    java调用shell向DataX传参,带where条件,特殊字符

    注意,如果参数包含特殊字符(如空格、分号、引号等),需要正确地进行转义或者用引号括起来,以确保Shell能正确解析。 然后,关于DataX参数的传递,DataX任务通常通过JSON配置文件来定义,例如`etl_job_oracle2...

    vc mfc 分割字符串

    在实际应用中,特别是处理文件路径时,可能需要将路径中的单个反斜杠 `'\'` 替换为双反斜杠 `'\\'`,这是因为反斜杠在字符串中具有特殊含义,常被用作转义字符。因此,在获取MFC中的图片路径时,进行此类替换可以...

    基于php常用函数总结(数组,字符串,时间,文件操作)

    trim()函数用于去除字符串两端的空格,而rtrim()和ltrim()分别用于去除字符串两端或左端的空格。addslashes()函数可以在指定的字符前添加反斜杠,以转义这些字符。strlen()函数用于计算字符串的长度。substr()函数...

    Python全套课程笔记-chap1-python入门与字符串

    - `open('D:\\user\\ccc.txt')`: 使用反斜杠表示绝对路径,或使用`r`前缀避免转义字符问题。 - **路径符号含义**: - `/` 或 `\`: 表示路径分隔符。 - `.`: 当前目录。 - `..`: 上一级目录。 #### 环境管理 - *...

    Tcl语法 入门教程 及 实用查询手册

    3. **反斜杠置换 (Backslash Substitution)**:允许使用反斜杠`\`来转义某些特殊字符。例如,`\n`表示换行,`\t`表示制表符。 4. **双引号与花括号**:双引号`"`内部的内容会被解释器进行变量和命令置换,而花括号`{...

    Qt读取注册表中内容

    在读取时,Qt会正确处理转义字符,所以通常不需要额外处理,除非值是用户手动输入且包含特殊字符,此时需要在显示或使用前进行解转义。 5. **异常处理**:进行注册表操作时,应考虑可能出现的异常,比如权限不足或...

    [精彩课件] 业绩管理工作手册.ppt

    在Web开发中,常见的转义字符是百分号(%),用于表示特殊字符或不可见字符。例如,“%20”表示空格。双重转义序列可能表现为类似“%%20”的形式,这通常被视为不安全的行为。 #### 1.3 双重转义序列的危害 双重...

    RarTest.rar

    这一知识点在开发过程中尤为关键,因为处理中文和空格字符往往会导致路径解析错误,从而影响程序的正常运行。 首先,让我们深入理解一下C#如何调用RAR库进行解压操作。在C#中,我们可以使用第三方库如SharpCompress...

    php提交表单时保留多个空格及换行的文本样式的方法

    这通常包括去除或转义一些特殊字符,确保数据的正确性和安全性。 总结来说,PHP在处理表单数据时保留空格和换行格式涉及使用正则表达式来处理特殊字符,并且可能需要对敏感词进行替换操作。同时,要兼顾用户输入...

    java获取文件创建时间

    ### Java 获取文件创建时间 在Java中,获取文件的创建时间并不像获取文件的最后修改时间那样简单直接。这是因为Java标准库(JDK)在...同时,在处理文件路径时需要注意特殊字符和空格的问题,以免引起不必要的错误。

    linux中make的内嵌函数

    - 如需将第一个“%”视为普通字符,可用反斜杠“\”进行转义。 - 处理过程中会忽略前导和结尾空格,同时将多个连续空格压缩为一个空格。 **示例**:假设文本为“x.c.c bar.c”,目标是将所有以“.c”结尾的单词替换...

    urlEncode or urlDecode

    在实际应用中,`urlEncode`常用于将查询参数添加到URL时,因为查询参数可能包含特殊字符,如空格或逗号,这些字符在URL中需要被转义。例如,如果用户输入的搜索关键词包含空格,前端会先使用`urlEncode`编码后再将其...

    100个直接可以拿来用的JavaScript实用功能代码片段(1-10)

    27、原生JavaScript获取当前路径 28、原生JavaScriptIP转成整型 29、原生JavaScript整型解析为IP地址 30、原生JavaScript实现checkbox全选与全不选 31、原生JavaScript判断是否移动设备 32、原生JavaScript判断是否...

    2020年《python程序设计》基础知识及程序设计598题C[含参考答案].docx

    18. 前缀'r'或'R'表示原始字符串,其中的反斜杠'\'不被解释为转义字符。 19. `for`循环配合`end=' '`可以改变打印时的分隔符。for i in range(3):print(i, end=',')输出'0,1,2,'。 20-22. `rstrip()`, `strip()`和...

Global site tag (gtag.js) - Google Analytics