Подписаться на получение новых статей на почту:

Сохраняем (логируем) данные в файл.txt на Java. Шаг №47

Всем привет. Итак продолжаем проект по созданию прикладной программы на Java для контроллера сбора данных. Как вы помните в прошлой статье мы научились опрашивать COM-порт и выводить данные в оконное приложение. В этой статье научимся сохранять данные в  файл .txt , с которого, в дальнейшем данные занесем в базу данных. Но это потом. Как я говорил вариантов решения поставленной задачи множество.

Ниже представлен один из них. Программу используем из прошлой статьи, здесь мы будем также модифицировать программу шаг за шагом аналогично тому как обрастала программа на Си для контроллера сбора данных. Как Вы, ниже, увидите сохранять информацию в текстовый файл очень легко. Своего рода логирование информации. Для этого в слушатель появления данных на  COM-порте вставляем еще блоки try, catch и finally. Ниже представлен код слушателя с добавленной конструкцией.

 

 

private static class EventListener implements SerialPortEventListener  {  /*Слушатель срабатывающий по появлению данных на COM-порте*/
        public void serialEvent (SerialPortEvent event) {
            if (event.isRXCHAR () && event.getEventValue () > 0){ /*Если происходит событие установленной маски и количество байтов в буфере более 0*/
                String data = null; /*Объявляем переменную типа String*/
                try {
                         data = serialPort.readString (event.getEventValue ()); /*Сохраняем данные*/
                        myLabel.setAlignment (Label.CENTER);
                        myLabel.setText (data);
                        System.out.print (data);     
                }
                catch (SerialPortException ex) {
                    System.out.println (ex);
                }
                /*Сохраняем данные в текстовый файл, дозапись*/
                try{
                    FileOutputStream fos = new FileOutputStream («log.txt»,true); /*Запись потоков необработанных байтов в текстовый файл. В данном случае создает поток вывода файла, чтобы записать в файл с указанным именем */
                    OutputStreamWriter osr = new OutputStreamWriter (fos,"Cp866");  /*Создаем объект для вывода данных в указанный поток fos, с учетом заданной кодировки символов Cp866*/
                    PrintWriter out = new PrintWriter (osr); /*Символьный класс включающий методы print () и println (). Непосредственно производим операции записи в файл*/
                    out.println (data); /*Запись данных с новой строки*/
                 } catch (IOException ex){
                 } finally { /*Обязательное выполнение кода*/
                     if (out != null){
                         try{
                             out.close ();     /*Закрытие файла*/
                         }catch ( Exception ex ){
                         }
                      }
                  }
             } } }

Результат выполнения программыСохранеие данных на Java.

Как видите на скриншоте, по сравнению с прошлой статьей, добавился текстовый файл log.txt. Из кода програмы видно, что данные выводятся в файл (красная стрелка) при тех же условиях, что и в оконное приложение и в консоль IDE (синяя и зеленая стрелка соответственно). Как видите, не совсем корректно сохраняются данные в файле, а именно один пакет у нас в разброс, хотя должен быть в одной строке. На даном этапе нас устроит и этот результат. Также обратите вниание что кодировку я использовал   Cp866. Если вам необходимо выводить корректно русские символы, то используйте кодировку cp1251 or utf-8. Как я писал, выше, методов решения данной задачи множество, поэтому если знаете используйте другие конструкции. Так же что можно использовать автоматическое закрытие файла, для чего нужна 7-я версия Java и объявление инстансов (экзепляров класса)в спецификации ресурса блока try. Я использовал версию 1.6. В следующих записях рассмотрим базу данных и СУБД MySQL, где научимся устанавливать ее и работать с ней.  Впоследствии сохраним данные из текстового файла в базу данных и в конце подвяжем MySQL к данному проекту. На этом сегодня и остановимся. Критикуйте и предлогайте. Всем пока.

Просмотрено 3718 раз.

Я на Google+

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting