2015-03-03 76 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(); 
} 
相关问题