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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как считать файл 
:(
    Опции темы
akolesni
Дата 10.11.2006, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Как считать примерно такой txt файл?
Проблема в том, что цuфры выравнены
по правому краю, и пробeлов м\у цифрами
от 2 до 5 



1929  -4.4  -10.4    2.6    4.8   14.5
1930   2.2       .4    4.1     9.4   13.2
1931     .2     -.8      .2      6.0   16.8

PM MAIL   Вверх
YuG
Дата 10.11.2006, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Получаешь stream 
Код

            File file = new File(filename);
            stream = new FileInputStream(file);


Получаешь reader 
Код

        BufferedReader reader = new BufferedReader(new InputStreamReader(stream));


Получаешь строку файла
Код

        String line = reader.readLine();


Парсишь эту строчку
Код

        StringTokenizer tokenizer = new StringTokenizer(line, " ", false);
        
        while (tokenizer.hasMoreTokens()) {
            String token = tokenizer.nextToken();
            System.out.println("[" + token + "]");
        }


PM WWW ICQ Skype   Вверх
y3u
Дата 10.11.2006, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну, парсить, это, конечно, хорошо... только вот начиная с пятой джавы процесс можн сильно оптимизировать и упростить

Код

        try {
            Scanner scanner = new Scanner(new File("..."));
            scanner.skip(Pattern.compile("\\s"));

            scanner. смотрим доки по методам, начинающимся с next, делаем соответствующие выводы :) все очень просто

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }


Это сообщение отредактировал(а) y3u - 10.11.2006, 23:51


--------------------
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
PM MAIL   Вверх
Fellini
Дата 3.10.2009, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Может я ошибаюсь, но что в одно что в другом случае оно считывает целую строку, чтото типа того:
[1929  -4.4  -10.4    2.6    4.8   14.5]
А как сделать так, чтобы оно считывало по одному чилу с этой строки по очереди, потом переходило на следующую?
Помогите пожалуйста

PM MAIL   Вверх
m1ha
Дата 3.10.2009, 03:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Fellini @ 3.10.2009,  00:52)
Может я ошибаюсь, но что в одно что в другом случае оно считывает целую строку, чтото типа того:
[1929  -4.4  -10.4    2.6    4.8   14.5]
А как сделать так, чтобы оно считывало по одному чилу с этой строки по очереди, потом переходило на следующую?
Помогите пожалуйста

ошибаешься. y3u всё правильно написал, только помойму в данном случае skip не нужен
Код

Scanner scanner = new Scanner(new File(""));
while (scanner.hasNextInt()){
     System.out.println(scanner.nextInt());
     while (!scanner.hasNextInt() && scanner.hasNextDouble()) {
          System.out.println(scanner.nextDouble());
     } 
System.out.println("-------------");
}


Это сообщение отредактировал(а) m1ha - 3.10.2009, 03:21
PM MAIL   Вверх
sergioK
Дата 3.10.2009, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 15.2.2008

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



Цитата(m1ha @ 3.10.2009,  03:19)
Цитата(Fellini @ 3.10.2009,  00:52)
Может я ошибаюсь, но что в одно что в другом случае оно считывает целую строку, чтото типа того:
[1929  -4.4  -10.4    2.6    4.8   14.5]
А как сделать так, чтобы оно считывало по одному чилу с этой строки по очереди, потом переходило на следующую?
Помогите пожалуйста

ошибаешься. y3u всё правильно написал, только помойму в данном случае skip не нужен
Код

Scanner scanner = new Scanner(new File(""));
while (scanner.hasNextInt()){
     System.out.println(scanner.nextInt());
     while (!scanner.hasNextInt() && scanner.hasNextDouble()) {
          System.out.println(scanner.nextDouble());
     } 
System.out.println("-------------");
}

Все дейсвительно очень удобно но почему когда файл сохранен как Unicode не работает ,
выдает java.util.NoSuchElementException
UTF-8 нет проблем , на своем компе - не проблема сохраняю как UTF-8 ,  а если у меня нет прав менять файл 
что тогда делать? 

похожая проблема возникает при 

Код

    BufferedReader input =  new BufferedReader(new FileReader(new File(fname)));
            String line;
              while (( line = input.readLine()) != null){
                System.out.println(new String (line.getBytes("Unicode")));
              }     
        
 но в это случае выдает закорючки 
??
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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