Java 缓冲写入程序
我正在尝试将从hashmap获取的值写入文件:Java 缓冲写入程序,java,file,nullpointerexception,Java,File,Nullpointerexception,我正在尝试将从hashmap获取的值写入文件: public writeToFile(HapshMap<String,String> , String fileName) { File myFile = new File(filePath); BufferedWriter bufferedWriter = null; Writer writer = new FileWriter(myFile,false); bufferedWriter = ne
public writeToFile(HapshMap<String,String> , String fileName) {
File myFile = new File(filePath);
BufferedWriter bufferedWriter = null;
Writer writer = new FileWriter(myFile,false);
bufferedWriter = new BufferedWriter(writer);
String paramsValue = params.get("NAME");
bufferedWriter.write(paramsValue);
}
public writeToFile(HapshMap,字符串文件名){
File myFile=新文件(filePath);
BufferedWriter BufferedWriter=null;
Writer Writer=newfilewriter(myFile,false);
bufferedWriter=新的bufferedWriter(writer);
字符串paramsValue=params.get(“名称”);
bufferedWriter.write(参数值);
}
在上面的代码中,HashMap中没有键“NAME”。
它抛出了NPE。有人能建议我们可以做什么,为什么会抛出NPE吗?当你要求BufferedWriter在某处写入
null
时,它确实抛出了NPE
这是你必须了解和处理的情况。例如,将空值替换为表示空的已知字符串:
Object nvl(Object value, Object defaultValue) {
return value != null ? value : defaultValue;
}
<...>
String value = nvl(map.get("Name"), ""); // using empty string instead of null
writer.write(value);
对象nvl(对象值,对象默认值){
返回值!=null?值:defaultValue;
}
String value=nvl(map.get(“Name”),”);//使用空字符串而不是null
writer.write(值);
我猜
paramsValue
是null
,对write()
的调用被阻塞了。什么是null-显示stacktraceWelcome。将代码放入try-catch构造中,并在catch块中打印堆栈跟踪。如果使用调试进行编译,则会看到引发异常的行号。有关更多详细信息,请参阅。如果您使用Java 8,您还可以使用HashMap
的方法getOrDefault(Object key,V defaultValue)
,而不是调用get(Object key)(Object key,V defaultValue)
,以防止值null
。您应该重命名变量default
,因为这是一个关键字。@mcopper,是的,确实如此。是的,这是真的。当从缓冲区写入null时,缓冲区写入程序将引发异常。