在java中写入文件时出现空指针异常

时间:2014-09-04 09:12:47

标签: 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 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();
}

产品数量的值为null然后发生异常

Exception in thread "main" 
@@@@@@@@@@@@@@null
java.lang.NullPointerException

此行中发生异常

if(!numberOfProducts.equals(null)||!numberOfProducts.equals(" "))

5 个答案:

答案 0 :(得分:3)

您必须以不同方式检查numberOfProducts内容:

if(null != numberOfProducts ||!"".equals(numberOfProducts))

而不是if(!numberOfProducts.equals(null)||!numberOfProducts.equals(" "))

因为如果numberOfProductsnull,则在equals对象上调用方法null会抛出nullPointerException

希望这有帮助,

答案 1 :(得分:2)

你的if语句numberOfProducts.equals(null)

中的

您正在将字符串与null字符串进行比较。这不会产生任何影响,因为您正在比较一个空对象。

请记住String是一个对象,你需要以nullnumberOfProducts == null

的方式检查对象numberOfProducts != null

答案 2 :(得分:1)

您无法检查是否null.equals(null) - 它会引发异常NullPointerException,以便绑定以访问equals() null方法。首先,使用numberOfProducts运算符确保null本身不是==

if (numberOfProducts == null) { 
   //do something
} else {
 ...
}

还要注意该行

if(!numberOfProducts.equals(null)||!numberOfProducts.equals(" "))

逻辑上没有任何意义。假设null.equals(null)可以工作(IT不会),第二个(右)操作数 - !numberOfProducts.equals(" ")将仅在numberOfProducts == null时进行评估,因此每当评估右操作数时 - 它将始终产生false

这意味着您的病情可以缩短为:

if (numberOfProducts != null) 

答案 3 :(得分:1)

正如您发布的:

System.out.println("@@@@@@@@@@@@@@"+numberOfProducts);

输出是:

@@@@@@@@@@@@@@null

这意味着numberOfProductsnull,因此如果你试图像这样调用任何非静态方法:

numberOfProducts.equals(null)

将抛出NullPointerException。如果您想检查它是否null,请按照这样做

if (numberOfProducts != null && !numberOfProducts.equals(" ")) {
    fw.write(numberOfProducts);
}

答案 4 :(得分:1)

我认为这会起作用

if(numberOfProducts!=null && !numberOfProducts.rquals(" ")){
 //doSomething
}else{
 //doSomethingElse
}