2011-06-09 30 views
0

我試圖在Java的代碼時:顯示java.lang.NullPointerException寫字節數組

try 
    { 
    String url = "http://url.com/file.ext"; 
    InputStream myInputStream = getClass().getResourceAsStream(url); 
    ByteArrayOutputStream myByteArrayOutputStream = new ByteArrayOutputStream(); 
    byte[] arrayOfByte = new byte[1024]; 
    int i; 
    while ((i = myInputStream.read(arrayOfByte)) != -1) 
    { 
     myByteArrayOutputStream.write(arrayOfByte, 0, i); 
    } 
    } 
    catch (Exception e) 
    { 
     System.err.println(e); 
     System.err.println(e.getMessage()); 
     System.err.println(e.getLocalizedMessage()); 
     System.err.println(e.getCause()); 
     System.err.println(Arrays.toString(e.getStackTrace())); 
     e.printStackTrace(); 

    } 

它編譯罰款,但它拋出一個異常,這是控制檯輸出:

java.lang.NullPointerException 
null 
null 
null 
[myclass.init(myclass.java:32), sun.applet.AppletPanel.run(Unknown Source), java.lang.Thread.run(Unknown Source)] 
java.lang.NullPointerException 
    at myclass.init(myclass.java:32) <- Line 32 is "while ((i = myInputStream....." 
    at sun.applet.AppletPanel.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

什麼可能會導致異常?

回答

3

實際上採取了第二次看,你的InputStream myInputStream = getClass().getResourceAsStream(url);無厘頭,而是使用

Url url = new Url("http://url.com/file.ext"); 
UrlConnection urlCon = url.openConnection(); 
InputStream input = urlCon.getInputStream(); 

這應該抓住字節正確

+0

+1 - 如果該網址確實是正確的,這是正確的。如果這是錯誤的,你仍然不會得到這些字節。我建議在使用之前檢查InputStream。 – duffymo 2011-06-09 00:18:47

3

InputStream顯然爲空。它是唯一在這條線上解除引用的對象。

getResourceAsStream()使用類加載器在CLASSPATH中搜索指定的資源。您提供的網址保證不在您的CLASSPATH中,因此這裏沒有神祕之處。

相關問題