2012-01-23 34 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声明将错误提示出来。

相关问题