Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск слова в текстовом файле 
V
    Опции темы
Griphon
Дата 24.1.2009, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 31.10.2008
Где: Киев

Репутация: 1
Всего: 1



Добрый вечер! По заданию дано не которое слово наличие которого нужно проверить в текстовом файле .
В одной из схожих тем Правильный способ искать слово в текстовом файле для этой цели рекомендовали использовать - grep (я так понял из nio) Если можно это сделать как либо иначе с минимальными затратами оперативной памяти- буду благодарен за совет.


smile 

Это сообщение отредактировал(а) Griphon - 25.1.2009, 00:03
PM MAIL   Вверх
math64
Дата 25.1.2009, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



grep - отдельная утилита для поиска, часто используется d Unix/Linux, но  есть весия для Windows. Написана на C. Упомянутая в указанной теме apache lucene создает индексный файл, по которому можно быстро определить, входит ли искомое слово в проиндексированный файл.
PM   Вверх
Platon
Дата 25.1.2009, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

Репутация: 16
Всего: 40



Если без всяческих вспомогательных излишеств, то я в своем блоге посвящал тему об обработке текстовых данных "на лету"

Это сообщение отредактировал(а) Platon - 25.1.2009, 14:50
PM MAIL ICQ   Вверх
Griphon
Дата 4.2.2009, 03:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 31.10.2008
Где: Киев

Репутация: 1
Всего: 1



Нашел более простой вариант на сайте Поиск слова в текстовом файле , вроде все элементарно просто, но в моей реализации почему то не работает

Код

String s;   
String slovo="бит"  
  try {
    LineNumberReader lnr= new LineNumberReader(new BufferedReader(new FileReader("scr/test.txt")));
                            
                            while(lnr.readLine()!=null){
                                s=lnr.readLine();

                                
                                if (s.indexOf(slovo)!=-1){
                                    System.out.println("bingo");
                                }

                                else{
                                    System.out.println(" :( ");
                                    break;
                                }
                                    
 }
             catch (IOException e) {
               // TODO Auto-generated catch block
                e.printStackTrace();
        }


Хотелось бы знать  в чем ошибка в моей реализации

P.S.:
Файл додан.

Это сообщение отредактировал(а) Griphon - 4.2.2009, 03:41

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  test.txt 0,05 Kb
PM MAIL   Вверх
Griphon
Дата 4.2.2009, 03:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 31.10.2008
Где: Киев

Репутация: 1
Всего: 1



Сории, думал что нашел проблему оказалось -не так

Это сообщение отредактировал(а) Griphon - 4.2.2009, 04:07
PM MAIL   Вверх
math64
Дата 4.2.2009, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Ты пропускаешь каждую вторую строку
Код

...
while((s=lnr.readLine())!=null){
  if (s.indexOf(slovo)!=-1){
  ...

PM   Вверх
Entry_N3
Дата 1.3.2011, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



Цитата(Griphon @ 4.2.2009,  03:24)
Нашел более простой вариант на сайте Поиск слова в текстовом файле , вроде все элементарно просто, но в моей реализации почему то не работает

Код

String s;   
String slovo="бит"  
  try {
    LineNumberReader lnr= new LineNumberReader(new BufferedReader(new FileReader("scr/test.txt")));
                            
                            while(lnr.readLine()!=null){
                                s=lnr.readLine();

                                
                                if (s.indexOf(slovo)!=-1){
                                    System.out.println("bingo");
                                }

                                else{
                                    System.out.println(" :( ");
                                    break;
                                }
                                    
 }
             catch (IOException e) {
               // TODO Auto-generated catch block
                e.printStackTrace();
        }


Хотелось бы знать  в чем ошибка в моей реализации

P.S.:
Файл додан.

У меня в данном случае не осуществляется сопоставление, т.к. не совпадает кодировка. Т.е. "бит" в одной кодировке, результат "s=lnr.readLine();"  - в другой. Как с этим бороться?
PM MAIL   Вверх
Skipy
Дата 1.3.2011, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: 6
Всего: 16



Читать файл в той кодировке, в которой он записан. FileReader читает в кодировке системы по умолчанию. В памяти строки в UTF-16BE, всегда. И компилировать правильно надо, если в коде русский текст.

В общем, вот это почитайте: http://www.skipy.ru/technics/encodings.html и http://www.skipy.ru/technics/encodings_console_comp.html


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
Entry_N3
  Дата 1.3.2011, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



Skipy, в принципе, так и сделал, через 
Код

new BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), "cp1251"));


А если я не знаю, в какой кодировке изначально придет файл?
PM MAIL   Вверх
_Y_
Дата 1.3.2011, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



Цитата(Entry_N3 @ 1.3.2011,  20:20)
А если я не знаю, в какой кодировке изначально придет файл?

Тогда наверное надо идти в тему алгоритмы и спрашивать как распознать кодировку по содержанию. Вопрос явно языком программирования не ограничен.

Думаю, что давно уже разработаны алгоритмы, определяющие кодировку по частоте встречаемости символов. А может и каким-либо более интеллектуальным способом, чем этот, описанный еще Конан Дойлем в рассказе про пляшуших человечков smile 


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Entry_N3
  Дата 2.3.2011, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



_Y_, спасибо.

Еще есть мнения?  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0572 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.