2015-08-26 2 views
0

Я использую Netbeans 8.0.2 с 64-битным JDK-1.8 на компьютере с Windows 10 x64 (также тестируется на Ubuntu 15.04) Это файл из системы чата, которая проверяет операцию (signin/signout) и затем проверяет в onlineusers.txt, если пользователь существует, если он не записывает пользователя в файл.
Редактировать
Моя программа пишет где-то, потому что он может выполнить все 3, если-иначе блоки успешно, но проблема заключается в текстовый файл, который я поставил путь, по-прежнему пусто.Запись в файл с использованием Java

P.S. - для записи в файл я уже пробовал метод создания временного файла, записывающего его, удаляя старые, переименовывая temp. Это не работал на Netbeans (я пробовал без IDE и он сделал работу)

Вот мой код, я пытался с параметрами - user=nick&oper=signin

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

    response.setContentType("text/html;charset=UTF-8"); 
    try (PrintWriter out = response.getWriter()) { 
     System.out.println("Users.java Start"); 
     String onlineUserPath = getClass().getResource("/textfiles/onlineusers.txt").getPath(); 
     File onlineUsers = new File(onlineUserPath); 
     BufferedReader reader = new BufferedReader(new FileReader(onlineUsers)); 

     ArrayList<String> tempUsers = new ArrayList<>(); 
     boolean userExist = false; 
     String s; 
     String user = request.getParameter("user"); 
     String operation = request.getParameter("oper"); 
     tempUsers.add(user); //uncommented 

     if ("signin".equals(operation)) { 
      while ((s = reader.readLine())!=null) { 
       if (s.equals(user)) { //edited 
        userExist = true; 
        out.print("userexist"); 
        break; 
       } else { 
        tempUsers.add(s); 
        out.print("signin"); 
       } 
      } 
     } else if("signout".equals(operation)) { 
      while ((s = reader.readLine()) != null) { 
       if (s.equals(user) { //edited 
        out.print("signout"); 
        userExist = true; 
        continue; 
       } 
       tempUsers.add(s); 
      } 

      if (!userExist) 
       out.print("usernotfound"); 

     } else if ("showmsg".equals(operation)) { 
      userexist = true; //added 
      while ((s = reader.readLine()) != null) { 
       out.print(s + "<br/>"); 
      } 
     } 

     //Writing    
     if (!userExist) { 
      FileWriter writer = new FileWriter(onlineUsers, false); 
      for (String add : tempUsers) {  
       writer.write(add); 
       System.out.println(add); 
      } 
      writer.close(); 
     } 

     reader.close(); 
     System.out.println("User.java code complete"); 
    } catch(Exception e) { 
     System.out.println("Exception: " + e); 
    } 
} 
+0

Это не имеет никакого отношения к написанию файла, чата или Netbeans. – EJP

+0

@EJP Пожалуйста, прочтите мое изменение еще раз. Я хочу знать, почему мой текстовый файл пуст, когда программа работает отлично. Где хранятся мои данные? –

ответ

0

Учитывая параметры, которые вы ввели , соответствующий раздел кода выглядит следующим образом:

String user = request.getParameter("user"); 
String operation = request.getParameter("oper"); 

if ("signin".equals(operation)) { 
    while ((s = reader.readLine()) != null) { 
     if (s == user) { 
      userExist = true; 
      out.print("userexist"); 
      break; 
     } else { 
      tempUsers.add(s); 
      out.print("signin"); 
     } 
    } 
} 

вы знаете, что вы не получаете какой-либо из звонков print() в этом разделе, поэтому вы никогда не войти в положительную ветвь if заявления. Проблема в том, как вы проверяете, соответствует ли пользователь, который вы только что прочитали из файла, пользователю, переданному в качестве параметра запроса.

Вы должны использовать String.equals() для проверки равенства строк, как указано в this answer.

Смежные вопросы