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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Учимся читать 
:(
    Опции темы
Samuil
  Дата 28.8.2006, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

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



HI All! Возник вопрос: как можно прочитать данные из файла лежащего в jar архиве(том же где и прога) не использую побайтовое чтение, и подскажите как работать с OutputStreamом , в документации читал но чтото не совсем понял :-( Вот примитивный кодик читающий из файла и кстати размер массива не должен превышать определенного числа, в таком случае хочется узнать, а как можно читать большие текстовые документы?

Код

import java.io.InputStream;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;

class trueHelp {
    TextBox text;
    String help_text;

    public trueHelp() {
        InputStream is = getClass().getResourceAsStream("/Help.txt");
        byte getT[] = new byte[265]; // И чтобы не указывать размер массива, откуда мне его знать?
        try {
            is.read(getT, 0, getT.length);
        } catch (Exception e) {}
        String s = new String(getT);
    }
}




--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
Samuil
Дата 28.8.2006, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

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



Нужна помощь, срочно smile 


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
604
Дата 29.8.2006, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Samuil, Привет! Там на самом деле все просто! Знать развем файла тебе совсем не нужно. Этот метод нужно применять в цикле до тех пор пока он тебе не вернет -1. К офсету каждую итерацию цикла нужно прибавлять размер твоего буфера. Соответственно каждую итерацию ты будешь получать новый кусок файла в своем буфере!
PM MAIL   Вверх
javastic
Дата 29.8.2006, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

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



Задай размер буфера больше чем 256, например 8192, и читай через
Код

read(buff, offset, buff_size)

затем смещайся по файлу (изменяй offset и контролируй buff_size (на последнем цикле он возможно будет меньше чем размер буфера)). Динамический размер буфера тут не покатит!


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Samuil
Дата 29.8.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

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



Приведите пожалуйста кодик smile 


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
javastic
Дата 30.8.2006, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

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



Попробуй написать сам, а мы если что подкорректируем.

Добавлено @ 09:42 
создай буфер, используй InputStream, цикл для проверки конца файла.


Это сообщение отредактировал(а) javastic - 30.8.2006, 09:42


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Samuil
Дата 30.8.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

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



javastic, 
Цитата

создай буфер

StringBuffer?


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
604
Дата 30.8.2006, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Samuil, 
Буфер байт у тебя вобщем то создан! В твоем коде не хватает цикла с проверкой на окончание файла(тоесть читаем в цикле пока read не выдаст -1) ну и собственно установки смещения в каждой итерации цикла.
PM MAIL   Вверх
604
Дата 30.8.2006, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Попробовал сделать, похоже я ошибся, офсет не нужно двигать в каждой итерации цикла.
Код

public void readFile()
  {
    InputStream is = getClass().getResourceAsStream("res/txt.txt");

    byte buff[] = new byte[256];
    int off = 0;
    int readBytes = 0;

    try
    {
      while ( (readBytes = is.read(buff, off, buff.length)) > -1)
      {
        System.out.println(new String(buff, 0, readBytes));
      }
    }
    catch (Exception e)
    {
      System.out.println("Exception: " + e.toString());
    }
  }


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


Опытный
**


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

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



Код


import java.io.InputStream;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;

class trueHelp {
    TextBox text;
    StringBuffer help_text = new StringBuffer();
    int offset = 0;
    int byte_read =0;
    static final int BUFFER_SIZE = 1024;

    public trueHelp() {
        InputStream is = getClass().getResourceAsStream("/Help.txt");
        byte getT[] = new byte[BUFFER_SIZE]; 
        try {
            while((byte_read = is.read(getT, 0, getT.length)) > 0) {
                 help_text.append(new String(getT,0,byte_read));
                 offset+=byte_read;
                 is.skip(offset);
             }
        } catch (Exception e) {
             e.printStackTrace();
        }
        String s = help_text.toString();
    }
}



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


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
redrick
Дата 30.8.2006, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а вроде совсем недавно обсуждали такой вопрос ?
я вот так читаю файл по строчечно:
Код

    private void loadResources(String lang) {
        InputStream is = getStream(lang); // возвращает поток с сообщениями для текущего языка телефона

        try {
            readChar(is); // 0xFEFF нам не нужен

            StringBuffer buf = new StringBuffer(32);

            while(true) {
                // читаем ключ
                int ch;
                while((ch = readChar(is)) != -1 && ch != 0xA && ch != 0xD && ch != '=') {
                    buf.append((char) ch);
                }

                if(ch == -1) {
                    break;
                }

                String key = buf.toString().trim();
                buf.delete(0, buf.length());

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




--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
Samuil
Дата 31.8.2006, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

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



Огромное спасибо ребята, пойду разбирать smile 


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




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


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

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