随笔- 62  文章- 1  评论- 5  阅读- 13004 

因为在tomcat的环境下默认的路径会在tomcat的bin文件夹中,因此需要将路径索引到.class的文件夹

String src = new String(this.getClass().getClassLoader().getResource("/").getPath()+"文件名");

回来鞭尸:getClassLoader在我们的自己的项目文件夹下编写的类的类加载器classLoader一般是application类加载器,加载的默认路径是项目的根路径,在springboot项目中,也就是java/src路径

如果类加载器为NULL,说明加载这个类的是启动类加载器,bootstrap,默认加载lib文件夹下的.class文件。然后下面还有extension类加载 扩展类加载器,加载的是jre文件夹下的lib/ext目录。 下面就是application 应用类加载器,加载自己项目中的类。

如果还想加载其他文件夹中的,自己随意指定文件夹的字节码文件,还需要自己写一个类加载器。继承ClassLoader类,然后覆写findClass()方法,更改路径就行。

加载类一般三个主要方法
loadClass() , 通过双亲委派模式,让父类先寻找然后加载

findClass(),读取class文件到内存 , 会调用下面的defineClass来将字节码的二进制给转换成Class对象

defineClass()将字节数组转换成Class对象

获取输入流

File file = new File(src);
InputStreamReader isr = new InputStreamReader(new FileInputStream(file),"UTF-8");

因为默认的是UNICODE,需要指定用UTF-8编码读取,否则会乱码。

//按行读取
reader = new BufferedReader(isr);
String tempString = null;
while ((tempString = reader.readLine()) != null) {
sList.add(tempString);
}
 posted on     阅读(649)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2021-04-05 DS博客作业02--栈和队列
点击右上角即可分享
微信分享提示