在java中写入文件时出现空指针异常
我在写入文件时遇到异常。我给出下面的代码在java中写入文件时出现空指针异常,java,file-io,filewriter,Java,File Io,Filewriter,我在写入文件时遇到异常。我给出下面的代码 private static void readCsvFromFileAmazon(List<String> filelist) throws BiffException, IOException,NullPointerException { FileWriter fw = new FileWriter("total_number_of_products_amazon.txt", true); String
private static void readCsvFromFileAmazon(List<String> filelist)
throws BiffException, IOException,NullPointerException {
FileWriter fw = new FileWriter("total_number_of_products_amazon.txt", true);
String numberOfProducts = getProductNumber(url);
System.out.println(category);
System.out.println("@@@@@@@@@@@@@@" + numberOfProducts);
// call function to get the number of products. \
if (!numberOfProducts.equals(null) || !numberOfProducts.equals(" "))
{
fw.write(numberOfProducts);
}
else
{
System.out.println("cant write null product");
}
fw.close();
}
此行中发生异常
if(!numberOfProducts.equals(null)||!numberOfProducts.equals(" "))
您无法检查null.equalsnull是否为空-它会抛出一个异常NullPointerException,用于绑定访问null的equals方法。首先,使用==运算符确保numberOfProducts本身不为null:
if (numberOfProducts == null) {
//do something
} else {
...
}
还要注意的是
if(!numberOfProducts.equals(null)||!numberOfProducts.equals(" "))
这在逻辑上毫无意义。假设null.equalsnull可以工作,但它不能工作,则右第二个操作数-!numberOfProducts.equals将仅在numberOfProducts==null时求值,因此无论何时求值正确的操作数,它都将生成false
这意味着您的病情可以缩短为:
if (numberOfProducts != null)
您必须以不同的方式检查numberOfProducts内容: ifnull!=产品数量| |!。等积数 而不是如果!numberOfProducts.equalsnull | |!numberOfProducts.equals 因为若numberOfProducts为null,那个么在null对象上调用方法equals会抛出一个nullPointerException 希望这对您有所帮助,正如您发布的:
System.out.println("@@@@@@@@@@@@@@"+numberOfProducts);
输出为:
@@@@@@@@@@@@@@null
这意味着numberOfProducts为空,因此,如果您尝试对其调用任何非静态方法,如下所示:
numberOfProducts.equals(null)
将抛出NullPointerException。如果你想检查它是否为空,就这样做
if (numberOfProducts != null && !numberOfProducts.equals(" ")) {
fw.write(numberOfProducts);
}
我想这会管用的
if(numberOfProducts!=null && !numberOfProducts.rquals(" ")){
//doSomething
}else{
//doSomethingElse
}
在if语句numberOfProducts.equalsnull中
您正在将字符串与空字符串进行比较。这没有任何效果,因为您正在比较空对象
请记住,字符串是一个对象,您需要以这种方式检查对象是否为null numberOfProducts==null或numberOfProducts!=null在地球上的什么地方,你使用等式将字符串与null进行比较你的getProductNumberurl是否返回了什么?正如错误中提到的:numberOfProducts在这里从GetProductNumber返回为null我发现了这个。等于在internet的某个地方签入并尝试..OK现在我解决了异常谢谢它有不同的这可能是OP真正想要的逻辑是的,我也同意这一点。
if(numberOfProducts!=null && !numberOfProducts.rquals(" ")){
//doSomething
}else{
//doSomethingElse
}