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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> String.getBytes() on linux 
:(
    Опции темы
uzgenius
Дата 12.11.2010, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте Народ!
у меня тут возникла проблема,
пишу программу которую читает из бинарного файла и обрабатывает данные, использовал String.getBytes(), вот кусок кода с проблемой
Код

   byte bayty[];
   BufferedReader bufferedreader = new BufferedReader(new FileReader(file));
   String s = bufferedreader.readLine();
   bayty = s.getBytes();

    for (int x=0;x<bayty.length;x++)
    {
        System.out.print(bayty[x]+"\n");
    }

под виндус работает нормально, вот результат
Код

-128     
-96
-128
4
7
16
17
5
6
0
4
0
49
-128
-128
6


а под линюкс запускаю результат другая, т.е. неправильная
Код

-17
-65
-67
-17
-65
-67
-17
-65
-67
4
7
16
17
5
6
0
4
0
49
-17
-65
-67
-17
-65
-67
6

в чем может быт проблема, помогите пожалуйста, я попробовал разные чарсеты не работает как надо, т.е. если ASCII делаю, под винда не пашет, а под линюкс:
Код

63
63
63
4
7
16
17
5
6
0
4
0
49
63
63
6

заранее спасибо, 

Это сообщение отредактировал(а) uzgenius - 12.11.2010, 11:53
PM MAIL   Вверх
kkorsakoff
Дата 12.11.2010, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



На самом деле проблема на 99% в кодировке. Вы чарсеты указывали при создании Reader и при вызове getBytes()?
PM MAIL WWW ICQ   Вверх
uzgenius
Дата 12.11.2010, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



при вызове гетбайтс, а при создании ридир можно указать чарсет?

Это сообщение отредактировал(а) uzgenius - 12.11.2010, 12:20
PM MAIL   Вверх
uzgenius
Дата 12.11.2010, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



в ридире тоже в разных чарсетах попробовал, но результат тоже самое :(
Код

InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream (file), "UTF-8");
BufferedReader bufferedreader = new BufferedReader(inputStreamReader);//new FileReader(file)



Это сообщение отредактировал(а) uzgenius - 12.11.2010, 13:07
PM MAIL   Вверх
jk1
Дата 12.11.2010, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

пишу программу которую читает из бинарного файла


Читать из бинарного файла надо при помощи InputStream, при помощи Reader читают символы:
Код

        InputStream is = new BufferedInputStream(new FileInputStream("c:/2.xml"));
        byte[] result = new byte[is.available()];
        is.read(result);
        for (Byte i : result){
            System.out.println(i);
        }

И о кодировке беспокоится не надо. Ну какая в самом деле кодировка в бинарном файле, о чем вы?)

Это сообщение отредактировал(а) jk1 - 12.11.2010, 14:43


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Skipy
Дата 13.11.2010, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



И еще о чтении бинарного файла: http://skipy-ru.livejournal.com/3621.html


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


Новичок



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

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



извините за долгий ответ:
вот так я решил проблему, в виндусе и в линуксе тоже работает:
Код

public static byte[] getBytesFromFile(File file, int len) throws IOException {
        InputStream is = new FileInputStream(file);
        long length = len;
        if (length > Integer.MAX_VALUE) {
            // файл слишком большой    
        }
    
        byte[] bytes = new byte[(int)length];
        int offset = 0;
        int numRead = 0;
        while (offset < bytes.length
               && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
            offset += numRead;
        }
    
        if (offset < bytes.length) {
            throw new IOException("не могу закончит чтение файла "+file.getName());
        }
    
        is.close();
        return bytes;
    }

всем спасибо, можно тему закрыт smile

Это сообщение отредактировал(а) uzgenius - 19.11.2010, 09:26
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.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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