Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Мобильные платформы > J2ME
Перезагрузить страницу DataInputStream - проблема вычитки файла
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
X-Cite_Forever X-Cite_Forever вне форума
Member
 
Сообщений: 536
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.10.2006
Exclamation DataInputStream - проблема вычитки файла - 02.09.2011, 13:29

Не могу понять как работает DataInputStream при чтении файлов.
Есть файл, записал туда 4 байта, число 10 типа Integer через Delphi.
В файле оно хранится получается в 1 байте, а остальные 3 пустые.
Когда вычитываю через DataInputStream ReadInt, он вычитывает непонятно что, но если вычитать через readByte он вытягивает правильно.
Java Код:
fm = (FileConnection) Connector.open(AFileName);
dis = new DataInputStream(fm.openDataInputStream());
len_name = dis.readInt(); //Вычитает число 167772160 или A000000 вместо 0000000A = A
dis.close();
fs.close();
Java Код:
fm = (FileConnection) Connector.open(AFileName);
dis = new DataInputStream(fm.openDataInputStream());
len_name = dis.readByte(); //Вычитает число 10
dis.close();
fs.close();
Как будто в Delphi читает байты справа налево, а в J2ME слева направо или наоборот хз.
Что за бред, как это объяснить и как это решить?
Если записать число 300, которое занимает уже 2 байта из 4-ех, то через DataInputStream и когда вычитываешь 2 байта и когда 4 показывает фигню, но не то что надо...
Ответить с цитированием
  (#2 (permalink)) Старый
X-Cite_Forever X-Cite_Forever вне форума
Member
 
Сообщений: 536
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.10.2006
По умолчанию 02.09.2011, 15:16

На одном из форумов нашел ответ:
Цитата:
Проблема в том, что программа на языке С записывает значения типа short в порядке младший байт/старший байт, а метод readShort использует порядок - старший байт/младший байт.
Но решение сказано через FileChannel и MappedByteBuffer которые в J2ME не поддерживаются..
Как поменять порядок байтов при чтении или после чтения?
Ответить с цитированием
  (#3 (permalink)) Старый
X-Cite_Forever X-Cite_Forever вне форума
Member
 
Сообщений: 536
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 24.10.2006
По умолчанию 02.09.2011, 15:47

Кому интересно решил таким образом:
Переопределяем класс DataInputStream, однако метод readInt(); финализирован и переопределению не подлежит, поэтому назовем по другому.
Java Код:
public class MyDataInputStream extends DataInputStream{

    public MyDataInputStream(InputStream AIs) {
        super(AIs);
    }

    public int readInt1() throws IOException{
        int ch1 = in.read();
        int ch2 = in.read();
        int ch3 = in.read();
        int ch4 = in.read();
        if ((ch1 | ch2 | ch3 | ch4) < 0)
            throw new EOFException();
        return ((ch4 << 24) + (ch3 << 16) + (ch2 << 8) + (ch1 << 0));
    }

}
Но все же хотелось бы вычитать данные по человечески, стандартными методами...
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема чтения данных из файла с DataInputStream X-Cite_Forever J2ME 0 01.09.2011 18:38
Проблема открытия файла Tdutybq Любые вопросы от новичков 1 25.08.2011 16:54
Проблема в обработке файла без использования массива на С++ teacher Вопросы начинающих программистов 1 02.04.2011 16:49
проблема с чтением из файла salwator Pascal 0 23.12.2010 10:26
Проблема с жестким диском! Показывает папки как неизвестный тип файла A.Petrikov Любые вопросы от новичков 2 15.09.2010 09:14
help!!!! проблема с удалением файла jezzz shao Софт и программы 1 20.06.2007 18:19
help!!!! проблема с удалением файла jezzz shao О сайте и форуме 0 20.06.2007 11:08
Проблема подключения файла базы данных в прлиложение neznayushiy .NET 1 17.05.2007 10:07
Проблема с выводом текстового файла в TEXTAREA Kenny Perl 1 11.05.2006 20:12
Что должно получиться если в конец файла добавить CRC32 код этого файла mbait Алгоритмы 1 14.05.2005 13:12
Проблема с открытием файла readonly Хиларион Delphi 3 07.04.2005 22:08
Копирование файла в указанную папку с удалением первого файла Пупкин Пупник Иванович Вопросы начинающих программистов 27 10.02.2005 10:57



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов