欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

利用流读取文件中的内容(InputStream)

程序员文章站 2022-10-03 14:29:48
读取上述文件中内容。运行后实际读取位置:两种方式:1:getClassLoader方式 public static void main(String[] args) { //当前页面的类名EsTest ClassLoader classLoader = new EsTest().getClass().getClassLoader(); InputStream resourceAsStream = classLoader.getResourceAsSt....

利用流读取文件中的内容(InputStream)
读取上述文件中内容。

运行后实际读取位置:
利用流读取文件中的内容(InputStream)

两种方式:

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

相关标签: java 工具类