2009-12-02 145 views
-1

,我在下面的方法获得java.lang.NullPointerExceptionwhile ((len = in.read(buf , 0 , buf.length)) >= 0)的Java空指针异常

public void copy(String src, File dst) throws IOException { 

    InputStream in = getClass().getResourceAsStream(src); 
     OutputStream out = new FileOutputStream(dst); 

     byte[] buf = new byte[1012]; 
     int len; 
     while ((len = in.read(buf , 0 , buf.length)) >= 0) { 
      out.write(buf, 0, len); 
      buf = null; 
     } 
     in.close(); 
     out.close(); 
    } 

我没有得到coz.I应该心存感激,如果我得到的solution.thanks提前.... ...

+4

如果您将'buf'设置为null ...则它将为空。 – 2009-12-02 09:02:47

回答

10

您设置

buf = null; 

在第一次迭代,在第二buf.length抛出NullPointerException异常。

2

因为您在循环的第一次迭代之后设置了buf = null;。它将在while循环的第二次运行时失败。

-1

你需要的东西像下面的循环中:

buf = new byte[1012]; 

或者你可以删除buf = null完全。

+0

删除buf = null就足够了 – Hardcoded 2009-12-02 09:14:05

1

buf = null;您的while循环内部导致问题,请尝试评论该行。

2

我看到了两个可能的空指针的位置:

  1. buf=null;,这definitly导致在第二次迭代一个NullPointerException。
  2. 如果未找到src,getResourceAsStream将返回null