Android читать текстовый файл необработанных ресурсов - PullRequest
110 голосов
/ 03 ноября 2010

Все просто, но не работает как положено.

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

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

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

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

На моем экране у меня есть макет, подобный следующему:

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
                     android:layout_width="fill_parent" 
                     android:layout_height="wrap_content" 
                     android:gravity="center" 
                     android:layout_weight="1.0"
                     android:layout_below="@+id/logoLayout"
                     android:background="@drawable/list_background"> 

            <ScrollView android:layout_width="fill_parent"
                        android:layout_height="fill_parent">

                    <TextView  android:id="@+id/txtRawResource" 
                               android:layout_width="fill_parent" 
                               android:layout_height="fill_parent"
                               android:padding="3dip"/>
            </ScrollView>  

    </LinearLayout>

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

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

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

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

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

Ответы [ 11 ]

1 голос
/ 18 июля 2015

1. Сначала создайте папку Directory и назовите ее raw в папке res. 2. Создайте файл .txt внутри ранее созданной ранее папки raw и присвойте ему любое имя, например .articles.txt .... 3.copyи вставьте нужный текст в файл .txt, который вы создали, "article.txt". 4. Не забудьте включить текстовое представление в ваш 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();
}

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

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