Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Чтение строки из файла


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

    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ую строку из файла.

Автор: W0LF 27.3.2010, 13:10
ручками строку парсить, вырезать из нее то, что Вам нужно

Автор: MegaBitz 27.3.2010, 17:05
Вопрос решен. Помог вот этот метод: 
Код

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;
    }
}

Автор: eugine_s 29.3.2010, 10:19
Я бы вот такое использовал: 
Код

    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 строки, то да - смысл в полном разборе текста есть).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)