2012-01-23 69 views
1

我的Java代碼有問題。 我想傳遞一個文件(準確的xml文件)作爲方法的輸入參數。我粘貼我的代碼:一個方法可以返回一個文件嗎?

public File searchPlaces(){ 

    URL url = getClass().getResource("arml.xml"); 
    File file = new File(url.getPath()); 

    return file; 
} 

我有一個NullPointerException當我嘗試調用此方法。

有人可以幫我嗎?

+0

哪一行會引發空引用異常? –

+0

未找到您的XML文件('url'爲空,我猜) –

+0

日誌跟蹤?哪條線你有問題? – Vaandu

回答

1

是的,你可以。如果新的File()調用產生一個異常,你可能會得到一個空指針。

調試並查看您的Url是否爲空。

+0

我調試過了,url爲空。我必須包含文件的路徑? – AlessioG

+0

是的。網址應該有一個開始的方案。參考這個。 http://docs.oracle.com/javase/6/docs/api/java/net/URL.html#URL%28java.lang.String%29 –

+0

它返回NullPointerException,我修改我的代碼:URL url = getClass( ).getResource( 「C:\\腹板\\測試\\ arml.xml」); – AlessioG

2

您無法檢查「url」是否使用非空值進行初始化。

一旦你有一個有效的非空網址,你可以嘗試從它創建一個File對象。您可能必須檢查該文件是否爲非Null(或者可能允許此方法返回空項目)。無論哪種方式,返回一個空項目(文件或其他)是完全可以接受的Java內。

取消引用空值(在不引用任何對象的對象引用上調用方法)不是。這就是爲什麼你會得到錯誤,在

url.getPath() 

你只是錯誤地識別它失敗的地方。

+0

我已經調試過了,url是空的。我必須包含文件的路徑? – AlessioG

+0

這取決於。您正試圖加載相對於Class的文件。如果文件被封裝在'JAR'文件中,這是做事的正確方法。如果文件位於與類的位置無關的地方,那麼您應該滑動'Class.getResource(...)'並直接用'File'方法之一打開'File'。假設你想從一個類加載,然後我會再次嘗試一個絕對路徑(從jar文件的根目錄),如'/ com/myname/mydir/arm1.xml' –

+0

它返回NullPointerException,我修改我的代碼:URL url = getClass()。getResource(「C:\\ WebS \\ test \\ arml.xml」); – AlessioG

1

你可能想要在這裏做的不是返回一個File對象,而是一個BufferedReader或FileReader,或者FileInputStream。然後,使用try/catch將所有錯誤處理封裝在方法中,或者使用throws聲明將錯誤提示出來。

相關問題