Потеря переноса строки при чтении файла в Android

168
11 января 2018, 21:37

Я создаю поток записи в файл:

PrintStream stream = new PrintStream(openFileOutput("textFile",MODE_WORLD_READABLE));

Затем записываю в этот поток некие строки с переносами.

Затем считываю:

FileInputStream stream = ctx.openFileInput("textFile");
InputStreamReader reader = new InputStreamReader(stream,"UTF-8");
while (reader.ready()){
      int simb = reader.read();
      outString = outString.concat(Character.toString((char)simb));
}

Затем готовлю форму для отправки по почте:

Intent mail = new Intent(Intent.ACTION_SEND_MULTIPLE);
mail.setType("plain/text");
mail.putExtra(Intent.EXTRA_EMAIL, new String[] {"23433423@rambler.ru"});
mail.putExtra(Intent.EXTRA_SUBJECT, "письмо");
mail.putExtra(Intent.EXTRA_TEXT, outString);

Проблема в том, что в почтовой форме весь текст в одну строку. Если открыть записанный файл "textFile" в AkelPadе переносы есть. Подскажите как это исправить?

Answer 1

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

FileInputStream stream = ctx.openFileInput("textFile");
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
StringBuilder sb = new StringBuilder();
String inputLine;
while ((inputLine = reader.readLine()) != null) {
    sb.append(inputLine);
    sb.append('\n');
}
outString = sb.toString();
READ ALSO