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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение строки из файла, Как вытащить определенную строку файла 
:(
    Опции темы
MegaBitz
Дата 27.3.2010, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Извиняюсь если создаю повторную тему, но толком я ответа не нашел. Вот есть такой метод 
Код

    public String getDataFile(String path){
        DataInputStream dis  = new DataInputStream(getClass().getResourceAsStream(path));
        StringBuffer strBuff = new StringBuffer("");
        int ch = 0;

        try
        {
            while ((ch = dis.read()) != -1)
            {
              if((ch>=192)&&(ch<=255)) ch=ch+848;
              strBuff.append((char)ch);
            }
            dis.close();
            return strBuff.toString();
        }
        catch (Exception ex)
        {
            return "Ошибка: "+ex;
        }
        
    }


Но этот метод считывает весь текст, а мне надо например 5ую строку из файла.
PM MAIL   Вверх
W0LF
Дата 27.3.2010, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

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



ручками строку парсить, вырезать из нее то, что Вам нужно


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
MegaBitz
Дата 27.3.2010, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вопрос решен. Помог вот этот метод: 
Код

public static String[] split(String str, String c)
    {
        String r[] =  null;
        if(str!=null)
        {
            int lenght = str.length();
            int first = 0;
            Vector lista = new Vector();
            if(str.indexOf(c)!=-1)
            {
                for(int i = 0; i < lenght;i++)
                {
                    if(i+c.length()<=lenght)
                    {
                        if(str.substring(i,i+c.length()).equals(c))
                        {
                            lista.addElement(str.substring(first,i));
                            first = i+c.length();
                        }
                    }
                }
                if(!str.endsWith(c))
                {
                    lista.addElement(str.substring(first,lenght));
                }
            }else
            {
                lista.addElement(str);
            }
            r= new String[lista.size()];
            for(int i=0;i<lista.size();i++)
            {
                r[i] = lista.elementAt(i).toString();
            }
        }
        return r;
    }
}

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


Опытный
**


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

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



Я бы вот такое использовал: 
Код

    public static String getLine(String str, int lineNumber) {
        if (str == null || lineNumber <= 0) {
            return null;
        }
        String result = null;
        int pos = 0;
        int index = 0;
        boolean doJob = true;
        while (doJob) {
            int end = str.indexOf("\n", pos);
            if (index + 1 == lineNumber) {
                if (end == -1) {
                    end = str.length();
                }
                //if (pos < str.length()) //uncomment if null requered instead of zero-size string
                result = str.substring(pos, end);
                doJob = false;
            } else if (end == -1) {
                doJob = false;
            } else {
                pos = end + 1;
                index++;
            }
        }
        return result;
    }


В твоем же решении ты обрабатываешь весь текст, засовываешь в вектор все строки, а потом из этого вектора создаешь массив строк и уже из этого массива берешь 5-ю строку. очень много лишней работы, если тебе нужна только одна строка... 
Хотя если этот же текст нужно будет использовать повторно (т.е. потом, например, нужны будут еще 2,3,4 строки, то да - смысл в полном разборе текста есть).

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

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

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


 




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


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

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