A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 子弹滞销 初级黑马   /  2018-12-6 16:25  /  539 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

classLoader加载动态生成的文本
public class Test20 {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("b.txt");
        fw.write("aichi=niurou");
        fw.flush();
        ClassLoader classLoader = Test20.class.getClassLoader();
        InputStream is = classLoader.getResourceAsStream("b.txt");
        Properties prop = new Properties();
        prop.load(is);
        for (String key : prop.stringPropertyNames()) {
            System.out.println(key+"="+prop.getProperty(key));
        }
        is.close();
        fw.close();
    }
}执行结果java.lang.NullPointerException: inStream parameter is null用Debug执行正常,不会报异常关于异常的猜测:classLoader优先于对象存在,加载的文本其实是上一次生成的文本而输入流FileWrite对象创建后,对原文本进行了覆盖重写(先把原文件置为空???),导致迭代器没法正常识别文本内容,抛出空指针异常解决方法:在输出流FileWrite写出数据之后,创建输入流FileReader读取文本替代类加载器,测试可行!

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马