Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
12 / 8 / 6
Регистрация: 10.07.2011
Сообщений: 374
Записей в блоге: 1
1

BufferedReader.readLine. Не читает первые 2 символа, когда в файл происходит запись

26.08.2018, 16:50. Показов 2623. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь читать из текстового файла логи, для этого создал класс-потомок класса Thread и переопределил метод Run(). Если файл никто не использует, то программа печатает его содержимое полностью. Если же попытаться записать новую строку в файл во время работы данной программы, то выводится строка, но без 2-х первых символов. С чем это связано? Что я упустил?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
        public void run()
        {
            inputLog = null;
            String St1 = St;            
            try {
            inputLog = new BufferedReader(new java.io.FileReader(St1));
            String currentStr=null;
            do
            {
                if(!Thread.interrupted())   //Проверяем на прерывание
                {
                    try {
                        currentStr = inputLog.readLine();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        System.out.println("Ошибка чтения файла");                     
                    }
                    if (currentStr != null) {
                        System.out.println(currentStr);                     
                        continue;
                    }                   
                }
                else
                    return;     //Завершение потока 
 
                try{
                    Thread.sleep(200);      //Приостановить поток.
                }catch(InterruptedException e){
                    return; //Завершить поток после прерывания
                }
            }
            while(true); 
            } catch (FileNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
                System.out.println("Ошибка открытия файла");
            }
            finally {
                try {
                    inputLog.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    System.out.println("Ошибка закрытия файла");
                    e.printStackTrace();
                }
            }
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.08.2018, 16:50
Ответы с готовыми решениями:

В чем различие между bufferedReader и reader.readline
в чем различие между bufferedReader и reader.readline

Запись данных в файл посредством BufferedReader
Здравствуйте уважаемые. Читаю книгу по программированию. Пытаюсь разобраться с I/O. Наткнулся на...

Сколько байт читает BufferedReader.read() ?
В доках написано что read a single character, но Returns: The character read, as an integer in the...

Написать программу, которая читает первые три символа из каждой строки текстового файла
Написать программу, которая читает первые три символа из каждой строки текстового файла stroki.txt

2
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
26.08.2018, 18:36 2
поробуй изменить подход и использовать не ридер а сканнер. у него есть метод hasNext который скажет появилась ли новая строка - не придется считывать и проверять на нулл.
0
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
27.08.2018, 22:06 3
Java
1
2
3
4
5
6
7
8
9
10
11
try {
                bufer = new BufferedReader(new InputStreamReader(new FileInputStream("путь к файлу"), StandardCharsets.UTF_16));
 
                String line;
 
                while (null != (line = bufer.readLine())) {
                  System.out.println(line); //будет выводить в консоль файл по одной строчки пока он не кончится... Прочитает 100%
                }
            } catch (IOException e) {
                //отлавливай файл не найден
            }
Добавлено через 4 минуты
А сорян задание по диаганале прочитал фигню сморозил
0
27.08.2018, 22:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2018, 22:06
Помогаю со студенческими работами здесь

Ini-файл: чтение происходит без проблем, но запись в файл не происходит, почему?
Пытаюсь научиться работать с ini файлам, чтение происходит без проблем но запись в файл не...

Машина Маркова. Удалить из слова P первые 3 символа a и первые 2 символа b
A = {a,b,c}. Удалить из слова P первые 3 символа a и первые 2 символа b. Помогите решить задание...

StreamReader.ReadLine - читает через строку
Добрый день! Задача: выделить из SMD файла часть, в которой описывается связь суставов (nodes)....

Console.ReadLine() не читает первый символ
Консолька читает первый символ только если нажать backspace, перемещения курсора...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru