Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 缓冲写入程序_Java_File_Nullpointerexception - Fatal编程技术网

Java 缓冲写入程序

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

我正在尝试将从hashmap获取的值写入文件:

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时,缓冲区写入程序将引发异常。