2013-04-15 62 views
0

随着下面的检查,我得到一个错误......因为我试图加载一个不存在的文件......我该如何安全地执行此检查?Java Servlet检查文件是否存在或创建它

File file = new File(getClass().getResource("/file.xml").getFile()); 

if(file.exists()==false){ 

    //CREATE THE FILE 


    } 

    else{ 

    //UPDATE THE FILE 
    } 
+0

哪部分代码是你从错误中得到的?听起来像是第一行... – einpoklum

+0

我注意到你把这个问题标记为“servlets”。你可以扩展一点吗?此代码是否从扩展HttpServlet的类运行?它是从一个HttpServlet调用... – mmutilva

回答

0

如果你看一下Class.getResource()的API,你会看到它,如果这个文件不存在返回null。所以,你只需要做到这一点:

URL url = getClass().getResource("/file.xml"); 
if(url == null) { 
    // File does not exist 
} 
else { 
    // File exists 
} 

随着人们一直在说,你不能保证能够写入到该目录中的文件,所以当你写确保它是到外部位置。

+0

好吧...但比我怎么写呢?我无法使用File file = new File(getClass()。getResource(“/ file.xml”)。getFile());作为文件目标 –

+1

通常,您不能在类路径上创建文件,因为可能没有文件系统可以在其中运行。此解决方案不正确。 –

+0

诚然,你不能这样做。我认为,如果他询问寻找/创建文件,他处于可能发生这种情况的环境中。 –

3

Class.getResource()使用类加载器返回web应用程序的WEB-INF/lib目录或WEB-INF/classes(仍在web应用程序中)中的jar内的资源的URL。你不能也不能认为这是一个文件。一个webapp通常被部署为一个war文件。无论如何,这场战争的内容必须保持为只读。

如果要写入文件,请在webapp外的目录中使用文件IO。

相关问题