java IO载入url写法

今天处理想加载maven项目中resources的配置文件(a/b.txt) 失败,浪费了时间,干脆好好的攻克一下这个问题.

设计url的对象有File对象(FIS,FOS等同),Class,ClassLoader,URL.

一.

建立新项目,分别在项目所在盘符根目录,即将打包的盘的项目根目录,即将打包的jar文件旁边,项目根目录,.java文件旁边准备123.txt文本,里面的内容注明文件位置.之后直接在File对象中测试url= 123.txt (./123.txt)  ||   /123.txt   ,之后export到预定位置,在cmd中运行.

结果是:

a.无论是java project还是maven project ./123.txt或123.txt指向的位置都是工程的根目录.

b.如果项目编译打包,那么./123.txt和123.txt指向的是和jar文件旁边.

c.无论是eclipse环境还是编译打包生成的jar/war, /123.txt都指向文件所在盘符的根目录,linux系统应该直接是/路径.

d.maven项目会因为maven的原因,源代码(eclipse 工程目录)和jar包/war包的文件目录不一致,先明白./123.txt和123.txt回和src文件夹平行.取resource里面的文件请继续看下面.

二.

1.取resource里面的文件推荐getResourceAsStream(String name)方法.

2.该方法Class对象和ClassLoader对象都有,但结果很可能不一致.

3.填入参数我没有填"/",试了一次直接空指针.

4.getResource和getResourceAsStream方法的区别是一个前者返回Url对象(该对象稍作处理就可取得流的绝对路径),后者直接返回流.

5.Test.class().getResource()和Test.class().getClassLoader().getResource()的区别是前者返回的.class文件所在的目录,后者是项目的根目录(即使打包成jar/war也依然是).标准maven项目中src/java/resources/里面的文件就可以利用类加载器取得

三.

若还要继续话题,那么就可以去看ClassLoader的getResource()的处理方式,这里涉及java的3种类加载器知识.maven这种帮助java程序员快速构建,编译,打包的工具的知识.感兴趣的朋友可以指出不足甚至帮忙继续话题.以后有合适的时间我也会继续.

博客写得,很丑,很菜.sorry.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值