Как прочитать файл в textview с правильным отображением, как в текстовом файле? - PullRequest
1 голос
/ 20 декабря 2011

Как прочитать файл в textview с правильным отображением, как в текстовом файле?Я могу прочитать файл в textview.Но отображается как в текстовом файле.Мой оригинальный текстовый файл:

Testing this 1

Satheeshisdf sdf asdfsdfasd fasdfsdfsd
i can able to do it.

Trying it                         thats all.`

Но отображается так:

i can able to do it.

Trying it                         thats all.`

Макет:

<ScrollView 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:layout_weight="1.0">
<TextView 
    android:id="@+id/subtitletv"
    android:textSize="18dp"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
/>

Программа:

subtitletv = (TextView)findViewById("R.id.t");
try {
        FileReader fr=new FileReader(selectedfile);
        BufferedReader br=new BufferedReader(fr);
        String line = null;
        try {
            while(br.readLine()!=null)
            {
                line =br.readLine();
                subtitletv.append(line);
                subtitletv.append("\n");
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Update1: Но теперь я не могу прочитать большой файл (50 КБ).Небольшая загрузка файла хорошо.

Ответы [ 2 ]

5 голосов
/ 20 декабря 2011

Вы добавляете каждую строку только потому, что читаете две строки за раз ...

while(br.readLine()!=null) // THIS READS FIRST LINE THEN THIRD LINE
{
    line = br.readLine(); // THIS READS SECOND LINE THEN FOURTH AND SO ON
    subtitletv.append(line);
    subtitletv.append("\n");
}

Используйте ...

while((line = br.readLine()) != null)
{
    subtitletv.append(line);
    subtitletv.append("\n");
}
2 голосов
/ 20 декабря 2011

Вы читаете строку из br дважды за итерацию цикла.Прочитайте только один раз.Также убедитесь, что вы закрыли FileReader в блоке finally.Например:

subtitletv = (TextView)findViewById("R.id.t");
FileReader fr = null;
try {
    fr = new FileReader(selectedfile);
    BufferedReader br = new BufferedReader(fr);
    String line = br.readLine();
    while (null != line) {
        subtitletv.append(line);
        subtitletv.append("\n");
        line = br.readLine();
    }
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} finally {
    if (null != fr) {
        try {
            fr.close();
        } catch (IOException e) {
            // ignore
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...