Текстовый файл Android (в директории raw) читается неправильно - PullRequest
1 голос
/ 08 декабря 2011

Я хочу прочитать из текстового файла, который находится в res / raw / text, я успешно читаю, но после каждой строки в моем выводе появляется странный символ, похожий на этот «[]».И этот символ находится в конце каждой строки вывода, где есть новая строка в моем исходном файле (текст).Не знаю, как удалить этот символ из каждой строки ..

  public class HelpActivity extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.help);
    TextView textview = (TextView)findViewById(R.id.TextView_HelpText);
    textview.setText(readTxt());

}
private String readTxt() {
     InputStream is = getResources().openRawResource(R.raw.text);
        ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
         int i;

        try
        {

            i = is.read();
            while (i != -1)
            {
                byteArray.write(i);
                i = is.read();
            }
            is.close();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block

            e.printStackTrace();
        }
        return byteArray.toString();

}

}

Ответы [ 2 ]

2 голосов
/ 08 декабря 2011

Вы, вероятно, подбираете нежелательные или неформатированные символы CR / LF, что разделяет текст на новую строку.Если вы работаете в Windows, в конце строки будет и CR, и LF.На OS X и Linux есть только LF.(У старых Mac был только CR.)

Итак, если вы сохранили текстовый файл в Windows и отображаете его в Android (Linux), то в неформатированном тексте могут отображаться дополнительные символы CR, по одномуконец каждой строки.

Чтобы исправить это, попробуйте что-то вроде этого

private String readTxt() {
    InputStream is = getResources().openRawResource(R.raw.text);
    BufferedReader r = new BufferedReader(new InputStreamReader(is));
    StringBuilder total = new StringBuilder();
    String line;
    while ((line = r.readLine()) != null) {
        total.append(line);
    }
    return total.toString();
}

Заимствовано частично из https://stackoverflow.com/a/2549222/324625

0 голосов
/ 08 декабря 2011

Как вы создали текстовый файл?Существует разница в том, как ОС обрабатывает символы конца строки.Символ EOL в Unix / Linux отличается от символа EOL в Windows, это может объяснить разницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...