当前位置: 移动技术网 > IT编程>开发语言>Java > 利用流读取文件中的内容(InputStream)

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

2020年10月25日  | 移动技术网IT编程  | 我要评论
读取上述文件中内容。运行后实际读取位置:两种方式: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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网