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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> непонятные числа после чтения файла 
:(
    Опции темы
Reptor
Дата 28.7.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



записываю файл таким образом (и вывожу что записует)

    
Код

DataOutputStream dataOut = new DataOutputStream(new FileOutputStream(path));    
      
        CurrentWorkspace.iterator = CurrentWorkspace.list.iterator();
        while(CurrentWorkspace.iterator.hasNext()){
            Points p = CurrentWorkspace.iterator.next();    
            System.out.println(p.getX());
            dataOut.writeInt(p.getX());            
            dataOut.writeBytes("\r\n");
            
        }        
        dataOut.close();
    }


записует числа 
600
530
555
300
300
490
490
290
340
540
570
530
570

вот и ещё немного (записывает всё как надо)

потом я читаю этот файл и выводяться числа не понятно какие (и среди них есть нормальные  smile 

Код

DataInputStream dataIn =  new DataInputStream(new FileInputStream(path));
        
        while(dataIn.read()!=-1){
            System.out.println();
            System.out.println(dataIn.readInt());
            System.out.println();
            
        })


вот вывод, ерунда какаято 

153613
530

167772162

218759168

739052032

19664138

125453

490

167772161       попадаются и нормальные числа 


От куда вотети большие числа?

PM MAIL ICQ   Вверх
AntonSaburov
Дата 28.7.2008, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



FileReader вместо FileInputStream надо пробовать.
PM MAIL WWW ICQ   Вверх
garbuz
Дата 28.7.2008, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вроде вот как-то так.
Код

public static void read() {
        try {
            FileReader reader = new FileReader(inputFile);
            BufferedReader in = new BufferedReader(reader);
            String line;
            while ((line = in.readLine()) != null) {
                // do something
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
}

PM MAIL   Вверх
Reptor
Дата 28.7.2008, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

FileReader вместо FileInputStream надо пробовать.

AntonSaburov,  так а DataInputStream не принимает такого в конструктор
PM MAIL ICQ   Вверх
ivg
Дата 28.7.2008, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


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

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



Правило простое: Как (что и в какой последовательности) пишите в поток, так и читайте. А то у вас в каждом цикле пишется 6 байт, а читается 5.

Добавлено через 4 минуты и 43 секунды
writeInt(600) -> h00000258, writeBytes("\r\n") -> h0D0A;
read()в 3 стр. <- h00, readInt() <- h0002580D = 153613;
PM MAIL   Вверх
AntonSaburov
Дата 28.7.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Читайте документацию - в API прямо пример есть конструктора.

Код

BufferedReader in = new BufferedReader(new FileReader("foo.in"));

String line = null;
while((line=in.readLine()) != null) {
    System.out.println(Integer.parseInt(line));
}
in.close();

PM MAIL WWW ICQ   Вверх
Reptor
Дата 28.7.2008, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



ivg, так а как тогда правильно пользоваться этими вещами?
PM MAIL ICQ   Вверх
ivg
Дата 28.7.2008, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


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

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



Из цикла записи уберите 8-ю строку - это не нужно;
При чтении, окончание потока у readInt() будет java.io.EOFException, т. е. например так:
Код

    DataInputStream dataIn =  new DataInputStream(new FileInputStream(path));
    try {
        while(true){
            System.out.println(dataIn.readInt());
        }
    } catch (EOFException ignore) { }

upd: поправил блок catch{} - это ожидаемое исключение, и printStackTrace() лишний;

Это сообщение отредактировал(а) ivg - 28.7.2008, 18:49
PM MAIL   Вверх
Reptor
Дата 28.7.2008, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



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

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

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


 




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


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

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