我在jar中有以下结构
myjar.jar - > com - > MYProgram.class
Run Code Online (Sandbox Code Playgroud)-> file.txt
在MYProgram中,我想做:
getClass().getResourceAsStream("../file.txt")
Run Code Online (Sandbox Code Playgroud)
当我尝试读取输入流时,我得到NullpointerException.
哪里出错了?
要么使用
getClass().getResourceAsStream("/file.txt")
Run Code Online (Sandbox Code Playgroud)
要么
getClass().getClassLoader().getResourceAsStream("file.txt")
Run Code Online (Sandbox Code Playgroud)
(ClassLoader.getResourceAsStream始终采用"绝对"资源名称.)
我不相信导航"目录层次结构"的工作原理getResourceAsStream- 路径要么必须是相对于给定的类,而不是导航备份树,要么必须绝对开始.
尝试绝对路径:
getClass().getResourceAsStream("/file.txt")
Run Code Online (Sandbox Code Playgroud)
Javadoc getResourceAsStream说:
- 如果名称以'/'('\ u002f')开头,则资源的绝对名称是'/'后面的名称部分.
否则,绝对名称具有以下形式:
Run Code Online (Sandbox Code Playgroud)modified_package_name/name其中modified_package_name是此对象的包名称,其中'/'替换为'.' ( '\ u002e').
这会把你的路径变成这条绝对的路径:
/com/../file.txt
Run Code Online (Sandbox Code Playgroud)
我不认为..符号是受到尊重的.它确实寻找上述绝对路径.
| 归档时间: |
|
| 查看次数: |
1037 次 |
| 最近记录: |