因为在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); }
分类:
JAVA
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2021-04-05 DS博客作业02--栈和队列