2016-02-28 3 views
0

Что я пытаюсь сделать, после того как пользователь выбора элементов из выпадающего списка и нажмите на кнопку, корпус 2 будет работать и txtcp установит текстовое поле RK1314 и сохранить его в текстовый файлJava: Почему я не могу читать и сравнивать текстовые файлы?

case 2: if (sportcb.getSelectedItem().equals("Ferrari F430 Scuderia")) 
      { 
       ... 
       txtcp.setText("RK1314"); 

поэтому после нажатия кнопки, я хочу прочитать и сравнить текст, если он присутствует в текстовом файле, появится сообщение.

 String line; 
     String fileName = "test.txt"; 
     String link = txtcp.getText(); 
     BufferedReader br = null; 
     try { 
      br = new BufferedReader(new FileReader(fileName)); 

      while((line=br.readLine()) != null) { 
      if(line.equals(link)) 
       JOptionPane.showMessageDialog(this," identical match found in the text file!"); 
      } 
      br.close(); 
     } 
     catch(IOException e) {  
      JOptionPane.showMessageDialog(this,"hello"); 
     } 

Вот мой код для записи в текстовый файл:

 File data = new File("test.txt"); 

     try { 
      String cname = name.getText(); 
      String sdate = startdate.getDate().toString(); 
      String edate = enddate.getDate().toString(); 

      if (data.exists() == false) { 
      System.out.println("We had to make a new file."); 
      data.createNewFile(); 
      } 
      PrintWriter out = new PrintWriter(new FileWriter(data, true)); 
      out.append("Customer name: "+cname); 
      out.append(System.lineSeparator()); 
      out.append("Contact Number: "+cn); 
      out.append("Car plate: "+plate); 
      out.append(System.lineSeparator()); 
      out.append("---------------------------------------------------------------------------------------------------------------------"); 
      out.append(System.lineSeparator()); 
      JOptionPane.showMessageDialog(this, "Order is Recorded!"); 
      out.close(); 
     } catch(IOException e) { 
      JOptionPane.showMessageDialog(this, "Order is not Recorded!"); 
     } 

после нажатия кнопки, ничего не произошло.

+0

Я попытался использовать FileReader fr = новый FileReader (fileName); BufferedReader br = new BufferedReader (f r); но он все еще не работает – user63566

+0

pl отредактируйте ваш вопрос и добавьте информацию, добавленную в комментарий к вашему тексту вопроса, и удалите комментарий. –

+0

@RajenRaiyarela в основном это ничего, я просто пробовал по-другому, но в итоге результаты все те же – user63566

ответ

1

Ваш код, кажется, ищет линию, которая точно равна «RK1234»; т.е.

if (line.equals(link)) { ... 

Тем не менее, код записи файла выводит данные следующим образом:

 out.append("Customer name: "+cname); 
     out.append(System.lineSeparator()); 
     out.append("Contact Number: "+cn); 
     out.append(System.lineSeparator()); 
     out.append("Car plate: "+plate); // Updated ... 
     out.append(System.lineSeparator()); 
     out.append("---------------------------------------" + 
       "---------------------------------------" + 
       "---------------------------------------"); 
     out.append(System.lineSeparator()); 

Ни один из 4-х строк не производят с помощью вышеизложенного можно возможно быть равен «RK1234». Предполагая, что RK1234 является «табличкой», тогда для этой линии будет «Автомобильная пластина: RK1234» ... которая НЕ равна «RK1234».

Итак, когда вы нажимаете кнопку:

  • Это открывает файл.
  • Он читает каждую строку, ни одна из которых не соответствует (так что для этого нет диалога)
  • Он не генерирует исключение ввода-вывода (так что нет «Hello»).
  • Он достигает конца файла, закрывает его и заканчивает.

Одним словом, вы не см. любые диалоги.

Возможно, вам следует пройти тестирование, если строка содержит, что строка; например

if (line.indexOf(link) >= 0) { ... 

или

if (line.contains(link)) { ... 
+0

Большое спасибо за то, что я указал на свои проблемы, я повторно редактировал вопросы. – user63566

+0

Мой ответ по-прежнему стоит, даже после ваших изменений в вопросе. –

-1

Возможная причина в том, что ваш файл не пишет.

Конструктор PrintWriter(Writer) Создает новый принтер PrintWriter без автоматической промывки линии. Поэтому либо вам нужно позвонить out.flush() до out.close(), либо для создания PrintWriter используйте this contrustor, с помощью которого вы можете указать 'true' для параметра autoFlush.

В настоящее время происходит, что ваш файл не набирается.

+0

Это неверно. 'out.close()' попытается очистить все данные перед закрытием. Если он не может, это вызовет исключение. http://docs.oracle.com/javase/8/docs/api/java/io/OutputStreamWriter.html#close-- –

0

По вашему вопросу. Файл содержит такое же право. Имя клиента: Baby Номер клиента: 1234 Номер для заказа: RK123. Итак, когда вы читаете файл Он считывает строки по строке . Поэтому, пожалуйста, не используйте метод equals. Использование содержит метод. Это даст вам результат.

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