2015-03-03 46 views
-1

在servlet中,我從窗體中獲取值並嘗試使用表單值更新屬性文件值。但我得到java.io.IOException。請告訴我如何解決這個問題並更新我的屬性文件。如果我更新屬性文件,我將能夠看到.properties文件中的更改。 Servlet的當我嘗試更新.properties文件時發生異常

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    String name=request.getParameter("appName"); 
    String link=request.getParameter("appLink"); 
    String database=request.getParameter("appDB"); 
    String webServices=request.getParameter("appWebService"); 
    FileInputStream in = new FileInputStream("server_url.properties"); 
    in.close(); 
    Properties props = new Properties(); 
    props.load(in); 
    FileOutputStream outputStream = new FileOutputStream("server_url.properties"); 
    props.setProperty("DemoApps_Links", link); 
    props.setProperty("DemoApps_DataBase", database); 
    props.store(outputStream , null); 
    outputStream.flush(); 
    outputStream.close(); 
System.out.println(link); 
System.out.println(database); 
} 

堆棧跟蹤

java.io.IOException: Stream Closed 
java.io.FileInputStream.readBytes(Native Method) 
java.io.FileInputStream.read(FileInputStream.java:243) 
java.util.Properties$LineReader.readLine(Properties.java:434) 
java.util.Properties.load0(Properties.java:353) 
java.util.Properties.load(Properties.java:341) 
com.monitoring.servlets.updateDetails.doPost(updateDetails.java:38) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
+0

不知道這是你的錯誤,但是你確定在調用'load'時你應該使用一個關閉的'FileInputStream'? – TNT 2015-03-03 05:41:59

+0

檢查堆棧跟蹤1. java.io.IOException:流關閉2.com.monitoring.servlets.updateDetails.doPost(updateDetails.java:38) – nayakam 2015-03-03 05:43:11

+0

@TNT我刪除了close()..我現在沒有得到這個異常。但更新沒有反映在我的.properties文件中。 – V02169194 2015-03-03 06:15:53

回答

1

看着堆棧跟蹤java.io.IOException: Stream Closed,好像問題是在錯誤的地方你FileInputStream close語句。 您正在關閉它in.close()然後您正在閱讀下一條語句props.load(in)

儘量寫in.close()聲明。

0

的問題是您關閉流(in.close();)之後,你加載它(props.load(in);

最佳做法是,收於年底

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    String name=request.getParameter("appName"); 
    String link=request.getParameter("appLink"); 
    String database=request.getParameter("appDB"); 
    String webServices=request.getParameter("appWebService"); 
    FileInputStream in = new FileInputStream("server_url.properties"); 

    Properties props = new Properties(); 
    props.load(in); 
    FileOutputStream outputStream = new FileOutputStream("server_url.properties"); 
    props.setProperty("DemoApps_Links", link); 
    props.setProperty("DemoApps_DataBase", database); 
    props.store(outputStream , null); 
    outputStream.flush(); 
    outputStream.close(); 
System.out.println(link); 
System.out.println(database); 
in.close(); 
} 
相關問題