2015-03-03 2 views
-1

В сервлет я получаю значения из формы и пытаюсь обновить значение свойства файла с помощью значений формы. Но я получаю 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

+0

Проверка stacktrace 1. java.io.IOException: Stream Closed 2.com.monitoring.servlets.updateDetails.doPost (updateDetails.java:38) – nayakam

+0

@TNT Я удалил close() .. Теперь я не получаю это исключение. Но обновление не находит отражение в моем файле .properties. – V02169194

ответ

1

Глядя на трассировки стека java.io.IOException: Stream Closed, Похоже, проблема с вашим FileInputStream близко заявление в неправильном месте. Вы закрываете его первым 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(); 
} 
Смежные вопросы