this.getClass().getResource("/").getPath()获取路径错误

anubis_fun 2014-05-24 09:53:01
这是我的这一行代码:
Document document=reader.read(new File(this.getClass().getResource("/")+"/a.xml"));









下面是显示的错误:
org.dom4j.DocumentException: file:\D:\Desktop\java\workspace\%e8%af%bb%e5%8f%96csv%e6%8f%92%e5%85%a5%e6%95%b0%e6%8d%ae%e5%ba%93\bin\a.xml (文件名、目录名或卷标语法不正确。) Nested exception: file:\D:\Desktop\java\workspace\%e8%af%bb%e5%8f%96csv%e6%8f%92%e5%85%a5%e6%95%b0%e6%8d%ae%e5%ba%93\bin\a.xml (文件名、目录名或卷标语法不正确。)
at org.dom4j.io.SAXReader.read(SAXReader.java:266)
at ReadXML.readxml(ReadXML.java:21)
at DataBases.getconn(DataBases.java:17)
at Main.main(Main.java:18)
Nested exception:
java.io.FileNotFoundException: file:\D:\Desktop\java\workspace\%e8%af%bb%e5%8f%96csv%e6%8f%92%e5%85%a5%e6%95%b0%e6%8d%ae%e5%ba%93\bin\a.xml (文件名、目录名或卷标语法不正确。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at org.dom4j.io.SAXReader.read(SAXReader.java:243)
at ReadXML.readxml(ReadXML.java:21)
at DataBases.getconn(DataBases.java:17)
at Main.main(Main.java:18)
Nested exception: java.io.FileNotFoundException: file:\D:\Desktop\java\workspace\%e8%af%bb%e5%8f%96csv%e6%8f%92%e5%85%a5%e6%95%b0%e6%8d%ae%e5%ba%93\bin\a.xml (文件名、目录名或卷标语法不正确。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at org.dom4j.io.SAXReader.read(SAXReader.java:243)
at ReadXML.readxml(ReadXML.java:21)
at DataBases.getconn(DataBases.java:17)
at Main.main(Main.java:18)
Exception in thread "main" java.lang.NullPointerException
at DataBases.insert(DataBases.java:41)
at Main.main(Main.java:21)
...全文
12828 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
夜色流星 2014-05-27
  • 打赏
  • 举报
回复
getResource(Stirng name)获取的是URL(资源路径) 形式是 File:/,注意这个就行了 如果一定要 用getResource("/")+fileName, 就把 getResource(Stirng name)的file:/过滤掉 这里的绝对路径指的是从Classpath的根路径开始
gxf7218926 2014-05-27
  • 打赏
  • 举报
回复
一个是绝对 一个是相对的 你用错了吧
Magical茏 2014-05-26
  • 打赏
  • 举报
回复
楼主这种使用方法,遇到路径里有中文,就会找到不到
Magical茏 2014-05-26
  • 打赏
  • 举报
回复
		InputStream is = this.getClass().getResourceAsStream("/a.xml");
		Document doc = new SAXReader().read(is);
ilovefzq 2014-05-26
  • 打赏
  • 举报
回复
T t=new T(); SAXReader reader = new SAXReader(); File f=new File(t.getClass().getResource("/").getPath()+"/a.xml"); if(!f.exists()) f.createNewFile(); Document document=reader.read(f);
  • 打赏
  • 举报
回复
先把开头的\去掉再用file函数。
姜小白- 2014-05-26
  • 打赏
  • 举报
回复
试试 Thread.currentThread().getContextClassLoader().getResource("/").getPath() java代码中获取classpath路径 你路径中%e8%af%bb%e5%8f%96csv%e6%8f%92%e5%85%a5%e6%95%b0%e6%8d%ae%e5%ba%93 怎么回事呢?你的工程名是中文的吗?
夜色流星 2014-05-26
  • 打赏
  • 举报
回复
this.getClass().getResource("a.xml");这样获取直接得到文本URL 调用 .getFile()获取文本路径 this.getClass().getResource("/");获取的是URL文本路径 调用 .getPath()获取类的绝对路径(/C://...) 本问题可以直接用 Document document=reader.read(new File(this.getClass().getResource("a.xml")。getFile()));
miracleliu 2014-05-26
  • 打赏
  • 举报
回复
引用 8 楼 vnvlyp 的回复:
如果你要折腾的话。。
		URL url = this.getClass().getResource("/a.xml");
		String name = URLDecoder.decode(url.getFile(), "UTF-8");
		File file = new File(name);
		System.out.println(file.exists());
一般直接用InputStream
InputStream in = this.getClass().getResourceAsStream("/a.xml");
一般用ls的方法, 不过作为程序员,还是别用中文路径了,各种蛋疼。
vnvlyp 2014-05-26
  • 打赏
  • 举报
回复
如果你要折腾的话。。
		URL url = this.getClass().getResource("/a.xml");
		String name = URLDecoder.decode(url.getFile(), "UTF-8");
		File file = new File(name);
		System.out.println(file.exists());
一般直接用InputStream
InputStream in = this.getClass().getResourceAsStream("/a.xml");
gaofuqi 2014-05-25
  • 打赏
  • 举报
回复
程序找不到你的文件,“D:\Desktop\java\workspace\%e8%af%bb%e5%8f%96csv%e6%8f%92%e5%85%a5%e6%95%b0%e6%8d%ae%e5%ba%93\bin\a.xml ” 这个文件真的存在吗?
anubis_fun 2014-05-24
  • 打赏
  • 举报
回复
刚刚学Java,请求各位大神帮助

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧