利用流读取文件中的内容(InputStream)
程序员文章站
2022-05-03 23:48:39
读取上述文件中内容。运行后实际读取位置:两种方式:1:getClassLoader方式 public static void main(String[] args) { //当前页面的类名EsTest ClassLoader classLoader = new EsTest().getClass().getClassLoader(); InputStream resourceAsStream = classLoader.getResourceAsSt....
读取上述文件中内容。
运行后实际读取位置:
两种方式:
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