我正在使用以下代碼從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