Файл с сырым исходным текстом для Android

Все просто, но не работает так, как предполагалось.

У меня есть текстовый файл, добавленный как исходный ресурс. Текстовый файл содержит текст:

b) ЕСЛИ ПРИМЕНИМОЕ ЗАКОНОДАТЕЛЬСТВО ТРЕБУЕТ ЛЮБЫХ ГАРАНТИЙ В ОТНОШЕНИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ВСЕ ТАКИЕ ГАРАНТИИ ОГРАНИЧИВАЮТСЯ В ПРОДОЛЖИТЕЛЬНОСТЬЮ ДЕСЯТЬЮ (90) ДНЕЙ С ДАТЫ ДОСТАВКИ.

(c) НЕТ УСТНОЙ ИЛИ ПИСЬМЕННОЙ ИНФОРМАЦИИ ИЛИ КОНСУЛЬТАЦИЙ, ПРЕДОСТАВЛЯЕМЫХ ВИРТУАЛЬНЫМ ОРИЕНТИРОВАНИЕМ, ЕЕ ДИЛЕРЫ, ДИСТРИБЬЮТОРЫ, АГЕНТЫ ИЛИ СОТРУДНИКИ СОЗДАЮТ ГАРАНТИЮ ИЛИ В ЛЮБОМ ПУТЕМ УВЕЛИЧИТЬ ОБЪЕМ ЛЮБЫХ ГАРАНТИЙ, ПРЕДОСТАВЛЯЕМЫХ В НАСТОЯЩЕМ УРОВНЕ.

(d) (только для США) НЕКОТОРЫЕ ГОСУДАРСТВА НЕ ДОПУСКАЮТ ИСКЛЮЧЕНИЕ ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ, ТАК ВЫШЕ ИСКЛЮЧИТЕЛЬНО НЕ МОГУТ ПРИМЕНЯТЬСЯ К ВАМ. ЭТО ГАРАНТИЯ ДАЕТ ВАМ ОПРЕДЕЛЕННЫЕ ПРАВОВЫЕ ПРАВА И ВЫ МОЖЕТЕ ТАКЖЕ ИМЕТЬ ДРУГИЕ ЮРИДИЧЕСКИЕ ПРАВА, КОТОРЫЕ НЕОБХОДИМО ОТ СОСТОЯНИЯ ГОСУДАРСТВА.

На моем экране у меня такой макет:

     

Код для чтения исходного ресурса:

 TextView txtRawResource= (TextView)findViewById(R.id.txtRawResource); txtDisclaimer.setText(Utils.readRawTextFile(ctx, R.raw.rawtextsample); public static String readRawTextFile(Context ctx, int resId) { InputStream inputStream = ctx.getResources().openRawResource(resId); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); int i; try { i = inputStream.read(); while (i != -1) { byteArrayOutputStream.write(i); i = inputStream.read(); } inputStream.close(); } catch (IOException e) { return null; } return byteArrayOutputStream.toString(); } 

Текст получил, но после каждой строки я получаю странный символ [] Как я могу удалить этот символ? Я думаю, что это новая линия.

РАБОЧИЙ РЕШЕНИЕ

 public static String readRawTextFile(Context ctx, int resId) { InputStream inputStream = ctx.getResources().openRawResource(resId); InputStreamReader inputreader = new InputStreamReader(inputStream); BufferedReader buffreader = new BufferedReader(inputreader); String line; StringBuilder text = new StringBuilder(); try { while (( line = buffreader.readLine()) != null) { text.append(line); text.append('\n'); } } catch (IOException e) { return null; } return text.toString(); } 

Что делать, если вы используете BufferedReader на основе символов вместо байт-основанного InputStream?

 BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line = reader.readLine(); while (line != null) { ... } 

Не забывайте, что readLine () пропускает новые строки!

Вы можете использовать это:

  try { Resources res = getResources(); InputStream in_s = res.openRawResource(R.raw.help); byte[] b = new byte[in_s.available()]; in_s.read(b); txtHelp.setText(new String(b)); } catch (Exception e) { // e.printStackTrace(); txtHelp.setText("Error: can't show help."); } 

Если вы используете IOUtils из apache «commons-io», это еще проще:

 InputStream is = getResources().openRawResource(R.raw.yourNewTextFile); String s = IOUtils.toString(is); IOUtils.closeQuietly(is); // don't forget to close your streams 

Зависимости: http://mvnrepository.com/artifact/commons-io/commons-io

Maven:

  commons-io commons-io 2.4  

Gradle:

 'commons-io:commons-io:2.4' 

Скорее сделайте это так:

 // reads resources regardless of their size public byte[] getResource(int id, Context context) throws IOException { Resources resources = context.getResources(); InputStream is = resources.openRawResource(id); ByteArrayOutputStream bout = new ByteArrayOutputStream(); byte[] readBuffer = new byte[4 * 1024]; try { int read; do { read = is.read(readBuffer, 0, readBuffer.length); if(read == -1) { break; } bout.write(readBuffer, 0, read); } while(true); return bout.toByteArray(); } finally { is.close(); } } // reads a string resource public String getStringResource(int id, Charset encoding) throws IOException { return new String(getResource(id, getContext()), encoding); } // reads an UTF-8 string resource public String getStringResource(int id) throws IOException { return new String(getResource(id, getContext()), Charset.forName("UTF-8")); } 

Из действия добавьте

 public byte[] getResource(int id) throws IOException { return getResource(id, this); } 

или из тестового примера , добавьте

 public byte[] getResource(int id) throws IOException { return getResource(id, getContext()); } 

И следите за обработкой ошибок – не ловите и игнорируете исключения, когда ваши ресурсы должны существовать или что-то (очень?) Неправильно.

Это еще один метод, который определенно будет работать, но я не могу его прочитать для чтения нескольких текстовых файлов для просмотра в нескольких текстовых просмотров в одном действии, кто может помочь?

 TextView helloTxt = (TextView)findViewById(R.id.yourTextView); helloTxt.setText(readTxt()); } private String readTxt(){ InputStream inputStream = getResources().openRawResource(R.raw.yourTextFile); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); int i; try { i = inputStream.read(); while (i != -1) { byteArrayOutputStream.write(i); i = inputStream.read(); } inputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return byteArrayOutputStream.toString(); } 

@borislemke вы можете сделать это аналогичным образом

 TextView tv ; findViewById(R.id.idOfTextView); tv.setText(readNewTxt()); private String readNewTxt(){ InputStream inputStream = getResources().openRawResource(R.raw.yourNewTextFile); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); int i; try { i = inputStream.read(); while (i != -1) { byteArrayOutputStream.write(i); i = inputStream.read(); } inputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return byteArrayOutputStream.toString(); } 

Здесь идет смесь решений для выходных и Vovodroid.

Это более корректно, чем решение Vovodroid и более полное, чем решение для выходных.

  try { InputStream inputStream = res.openRawResource(resId); try { BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); try { StringBuilder result = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { result.append(line); } return result.toString(); } finally { reader.close(); } } finally { inputStream.close(); } } catch (IOException e) { // process exception } 

1. Сначала создайте папку «Каталог» и назовите ее «raw» внутри папки res. 2. Создайте файл .txt внутри папки исходного каталога, которую вы создали ранее, и укажите ему имя eg.articles.txt …. 3.copy и вставьте текст, который вы хотите в файле .txt, который вы создали «articles.txt» 4.dont забудьте включить текстовое представление в свой main.xml MainActivity.java

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gettingtoknowthe_os); TextView helloTxt = (TextView)findViewById(R.id.gettingtoknowos); helloTxt.setText(readTxt()); ActionBar actionBar = getSupportActionBar(); actionBar.hide();//to exclude the ActionBar } private String readTxt() { //getting the .txt file InputStream inputStream = getResources().openRawResource(R.raw.articles); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); try { int i = inputStream.read(); while (i != -1) { byteArrayOutputStream.write(i); i = inputStream.read(); } inputStream.close(); } catch (IOException e) { e.printStackTrace(); } return byteArrayOutputStream.toString(); } 

Надеюсь, это сработало!

 InputStream is=getResources().openRawResource(R.raw.name); BufferedReader reader=new BufferedReader(new InputStreamReader(is)); StringBuffer data=new StringBuffer(); String line=reader.readLine(); while(line!=null) { data.append(line+"\n"); } tvDetails.seTtext(data.toString()); в InputStream is=getResources().openRawResource(R.raw.name); BufferedReader reader=new BufferedReader(new InputStreamReader(is)); StringBuffer data=new StringBuffer(); String line=reader.readLine(); while(line!=null) { data.append(line+"\n"); } tvDetails.seTtext(data.toString()); 
Interesting Posts

Ноутбук в случайном порядке Включение и выключение

Как определить узкое место аппаратного обеспечения в ноутбуке?

Применить значения свойств от одного объекта к другому того же типа автоматически?

Могу ли я использовать CGAffineTransformMakeRotation для поворота изображения более чем на 360 gradleусов?

Когда использовать примитив и когда ссылочные типы в Java

Управление сеансами в Node.js?

Как отключить экран «Установка приложений»?

Синтаксис для однострочного бесконечного цикла Bash

Сортировка массива имен папок, таких как Проводник Windows (числовые и по алфавиту) – VB.NET

Как предотвратить пробуждение Windows 10 от сна при путешествии в сумке?

Как использовать пример onSavedInstanceState пожалуйста

Внедрение EmguCV TypeInitializationException

Случайно переименован / var корневой каталог в etc / var

Изменение или отключение жестов Windows 8 на сенсорной панели / ноутбуке

Возвращаемые массивы из функции в c ++

Давайте будем гением компьютера.