读取上述文件中内容。
运行后实际读取位置:
两种方式:
1:getClassLoader方式
public static void main(String[] args) {
//当前页面的类名EsTest
ClassLoader classLoader = new EsTest().getClass().getClassLoader();
InputStream resourceAsStream = classLoader.getResourceAsStream("1.txt");
try {
String s = IOUtils.toString(resourceAsStream);
System.out.println(s);
} catch (IOException e) {
e.printStackTrace();
}
}
注意:IOUtils导包:package org.apache.commons.io;
2:不用getClassLoader方式
public static void main(String[] args) {
InputStream resourceAsStream = new EsTest().getClass().getResourceAsStream("/1.txt");
try {
String s = IOUtils.toString(resourceAsStream);
System.out.println(s);
} catch (IOException e) {
e.printStackTrace();
}
}
注意:IOUtils导包:package org.apache.commons.io;
但是有区别:
总结:
1、使用ClassLoader加载文件时,在getResourceAsStream("")中填入的路径是相对于
classes/文件下的,比如我们写一个getResourceAsStream(“1.txt”),其实对应的是盘符:…\项目名\target\classes\1.txt文件。(如果是eclipse则是在相应的classes下)
2、使用Class加载文件时,在getResourceAsStream("")中填入的路径是相对于当前的.class文件所在的目录,比如我们写一个getResourceAsStream(“1.txt”),其实对应的是盘符:…\项目名\target\classes\com\first\1.txt文件,在上面的例子中,应为改路径下没有1.txt文件,所有会提示错误。但是当我们在文件前加一个\符号时getResourceAsStream("/1.txt"),就会变成和使用ClassLoader一样,变成相对于classes/文件,所以第二次就加载成功了。
本文地址:https://blog.csdn.net/weixin_41987908/article/details/109278951
您可能感兴趣的文章:
- 创建Gradle工程出现Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradleXX'.问题解决
- spring boot 错误:Check your ViewResolver setup
- java实现判断一个整数是几位数,并按照逆序输出
- SpringBoot 2.0 报错: Failed to configure a DataSource: 'url' attribute is not specified and no embe
- Please, configure Web Facet first!idea报这错的解决办法!!
- [异常处理1]Error occurred during initialization of boot layer
- 解决Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 问题
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
网友评论