JavaServlet检查文件是否存在或创建它
通过下面的检查,我得到一个错误。。。因为我试图加载一个不存在的文件。。。我怎样才能安全地进行这项检查JavaServlet检查文件是否存在或创建它,java,servlets,Java,Servlets,通过下面的检查,我得到一个错误。。。因为我试图加载一个不存在的文件。。。我怎样才能安全地进行这项检查 File file = new File(getClass().getResource("/file.xml").getFile()); if(file.exists()==false){ //CREATE THE FILE } else{ //UPDATE THE FILE } 如果您查看类的API。,您将看到如果该文件不存在,它将返回nu
File file = new File(getClass().getResource("/file.xml").getFile());
if(file.exists()==false){
//CREATE THE FILE
}
else{
//UPDATE THE FILE
}
如果您查看
类的API。
,您将看到如果该文件不存在,它将返回null。因此,您只需执行以下操作:
URL url = getClass().getResource("/file.xml");
if(url == null) {
// File does not exist
}
else {
// File exists
}
正如人们所说,您不能保证能够写入该目录中的文件,因此,当您写入时,请确保它位于外部位置。如果您查看
类的API。
,您将看到如果该文件不存在,它将返回null。因此,您只需执行以下操作:
URL url = getClass().getResource("/file.xml");
if(url == null) {
// File does not exist
}
else {
// File exists
}
正如人们所说,您不能保证能够写入该目录中的文件,因此在写入时,请确保它位于外部位置。Class.getResource()
使用类加载器返回WEB应用程序WEB-INF/lib
目录中jar内的资源URL,或者在WEB-INF/classes
中,仍然在webapp中。您不能也不能假设这是一个文件。webapp通常部署为war文件。无论如何,这场战争的内容必须保持只读
如果要写入文件,请在webapp之外的目录中使用file IO。Class.getResource()
使用类加载器返回webapp的WEB-INF/lib
目录中jar内或仍在webapp中的WEB-INF/classes
内的资源URL。您不能也不能假设这是一个文件。webapp通常部署为war文件。无论如何,这场战争的内容必须保持只读
如果要写入文件,请在webapp之外的目录中使用file IO。错误来自代码的哪一部分?听起来这是第一行…我注意到你把这个问题标记为“servlet”。你能在这个问题上再扩展一点吗?此代码是否从扩展HttpServlet的类运行?它是从HttpServlet调用的……您从代码的哪一部分得到错误?听起来这是第一行…我注意到你把这个问题标记为“servlet”。你能在这个问题上再扩展一点吗?此代码是否从扩展HttpServlet的类运行?它是从HttpServlet调用的…好的。。。但是我怎么写呢???我不能使用File File=new文件(getClass().getResource(“/File.xml”).getFile();作为文件目的地,通常不能在类路径上创建文件,因为可能没有可操作的文件系统。此解决方案不正确。是的,一般情况下不能这样做。我认为如果他问起寻找/创建文件的问题,他所处的环境可能会发生这种情况。我不明白。。。如果文件不存在。。。如何在url路径上创建它?@usi:阅读答案和注释:url不一定指向文件。即使是这样,你也不能写这个URL。写入某个外部目录。不要使用Class.getResource()获取它,只需
新建文件(“/some/absolute/path/that/you/choosed”)
ok。。。但是我怎么写呢???我不能使用File File=new文件(getClass().getResource(“/File.xml”).getFile();作为文件目的地,通常不能在类路径上创建文件,因为可能没有可操作的文件系统。此解决方案不正确。是的,一般情况下不能这样做。我认为如果他问起寻找/创建文件的问题,他所处的环境可能会发生这种情况。我不明白。。。如果文件不存在。。。如何在url路径上创建它?@usi:阅读答案和注释:url不一定指向文件。即使是这样,你也不能写这个URL。写入某个外部目录。不要使用Class.getResource()获取它,只需新建文件(“/some/absolute/path/that/you/choosed”)