2009-12-02 143 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