Java中读取Properties文件路径触发空指针异常问题排查
问题分析与解决方案
这个问题我碰到过好多次,核心坑点就在你的data.properties配置里!
问题根源
你在properties文件里写的配置是:
FileLoc="C://users//test"
当Properties.load()读取这个值时,双引号会被当作值的一部分完整读入——也就是说path变量实际拿到的内容是"C://users//test"(注意前后的双引号),而不是你预期的C://users//test。
用这个带引号的路径创建File对象时,系统找不到对应的有效目录,调用dir.listFiles()就会返回null。当你用增强for循环去遍历null的时候,自然就触发了空指针异常。而你硬编码路径时没有加引号,路径是完全有效的,所以能正常执行。
解决办法
你有两种可选的修复方式:
- 方式一(推荐):修改properties文件
直接去掉配置值的双引号,改成:FileLoc=C://users//test - 方式二:代码层面处理
如果不想修改配置文件,可以在读取路径后手动剔除首尾的双引号:String path = p.getProperty("FileLoc").replaceAll("^\"|\"$", "");
验证小技巧
你可以在读取path后加一行打印,直观确认路径内容:
String path = p.getProperty("FileLoc"); System.out.println("实际读取的路径: [" + path + "]"); // 带引号的话会显示["C://users//test"]
这样就能一眼看出问题所在啦。
内容的提问来源于stack exchange,提问作者Sriram S
相关产品推荐
相关产品推荐

