Android读取文本原始资源文件

新手上路,请多包涵

我添加了一个文本文件作为原始资源。文本文件包含如下文本:

 b) IF APPLICABLE LAW REQUIRES ANY WARRANTIES WITH RESPECT TO THE
SOFTWARE, ALL SUCH WARRANTIES ARE
LIMITED IN DURATION TO NINETY (90)
DAYS FROM THE DATE OF  DELIVERY.

(c) NO ORAL OR WRITTEN INFORMATION OR
ADVICE GIVEN BY  VIRTUAL ORIENTEERING,
ITS DEALERS, DISTRIBUTORS, AGENTS OR
EMPLOYEES SHALL CREATE A WARRANTY OR
IN ANY WAY INCREASE THE SCOPE OF ANY
WARRANTY PROVIDED HEREIN.

(d) (USA only) SOME STATES DO NOT
ALLOW THE EXCLUSION OF IMPLIED
WARRANTIES, SO THE ABOVE EXCLUSION MAY
NOT  APPLY TO YOU. THIS WARRANTY GIVES
YOU SPECIFIC LEGAL  RIGHTS AND YOU MAY
ALSO HAVE OTHER LEGAL RIGHTS THAT
VARY FROM STATE TO STATE.

在我的屏幕上,我有这样的布局:

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

显示了文本,但在每一行之后,我得到了奇怪的字符 [] 。如何删除字符?我认为这是一个换行符。

原文由 Alin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 269
2 个回答

如果您使用基于字符的 BufferedReader 而不是基于字节的 InputStream 会怎样?

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

不要忘记 readLine() 跳过换行符!

原文由 weekens 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 Kotlin,您只需一行代码即可完成:

 resources.openRawResource(R.raw.rawtextsample).bufferedReader().use { it.readText() }

甚至声明扩展函数:

 fun Resources.getRawTextFile(@RawRes id: Int) =
        openRawResource(id).bufferedReader().use { it.readText() }

然后直接使用它:

 val txtFile = resources.getRawTextFile(R.raw.rawtextsample)

原文由 Arsenius 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题