我正在使用以下代码从Tomcat容器中的servlet写入文件。如果在每次部署期间文件被覆盖,我不用担心。从servlet内部写入文件(部署者:Tomcat)
但是,文件写入不成功(它不会写入硬盘)。而且,没有任何异常被抓住! Tomcat中是否存在一些防止文件被写入的安全措施?
我正在使用以下代码从Tomcat容器中的servlet写入文件。如果在每次部署期间文件被覆盖,我不用担心。从servlet内部写入文件(部署者:Tomcat)
但是,文件写入不成功(它不会写入硬盘)。而且,没有任何异常被抓住! Tomcat中是否存在一些防止文件被写入的安全措施?
您的代码在文件名开头传递给getRealPath()
时,同时具有“/”和windows文件分隔符,Java根据当前操作系统解释文件名中的斜杠。
不使用文件分隔符可能会给一个更好的结果:
String filename = getServletContext().getRealPath("/WEB-INF/XML.xml");
log.debug("Using XML file: " + filename);
xml_out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename),"UTF8"));
使用单独的变量名可以登录,所以你可以看到去开发过程的早期意想不到的效果。
我有同样的问题。 this链接帮助我了解文件在硬盘中的位置。
特别对我来说,它把文件由该行返回的位置:
System.getProperty(“user.dir来”);
在我的情况,地点是:C:\用户\我自己\程序\ Eclipse进行Java
你是什么意思, “不成功”? – skaffman 2010-12-19 09:44:53
servlet完成其操作后,该文件不在硬盘上。 – bikashg 2010-12-19 09:48:43
您是否在任何地方捕捉到其他异常? WEB-INF文件夹是一个受保护区域,所以它有可能被写保护 – Codemwnci 2010-12-19 10:03:26