因为在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 2022-04-05 18:58    阅读(524)  评论(0编辑  收藏  举报