从Android中的.txt文件中保留新行和其他格式

时间:2015-09-28 23:32:26

标签: java android xml

好的,所以我正在开发我的第一个Android应用程序。原谅我,如果这听起来很幼稚,因为我在这方面有点新,但我使用以下代码从6个不同的.txt文件中读取到

private void displayFiles(int path) {
    TextView text = (TextView) findViewById(R.id.text);
    ImageView display = (ImageView) findViewById(R.id.head_image);
    String line = "";
    StringBuilder finalString = new StringBuilder();
    InputStream iStream = null;

    if (path == 0) {
        iStream = getResources().openRawResource(R.raw.salm);
        display.setImageResource(R.drawable.salm);
    } else if (path == 1) {
        iStream = getResources().openRawResource(R.raw.lyme);
        display.setImageResource(R.drawable.lyme);
    } else if (path == 2) {
        iStream = getResources().openRawResource(R.raw.pox);
        display.setImageResource(R.drawable.pox);
    } else if (path == 3) {
        iStream = getResources().openRawResource(R.raw.shig);
        display.setImageResource(R.drawable.shig);
    } else if (path == 4) {
        iStream = getResources().openRawResource(R.raw.gia);
        display.setImageResource(R.drawable.gia);
    } else if (path == 5) {
        iStream = getResources().openRawResource(R.raw.intro);
        display.setImageResource(R.drawable.intro);
    } else {
        Toast.makeText(this, "Something went wrong! Please refresh EpiQuick.", Toast.LENGTH_SHORT).show();
        return;
    }

    BufferedReader bReader = new BufferedReader(new InputStreamReader(iStream));
    try {
        while ((line = bReader.readLine()) != null) {
            finalString.append(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

    text.setText(finalString);
}

相应的xml:

<TextView
        android:id="@+id/text"
        style="@style/body"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/head_image"
        android:layout_marginBottom="16dp"
        />


  <style name="body">
    <item name="android:fontFamily">sans-serif-light</item>
    <item name="android:textSize">14sp</item>
    <item name="android:textColor">#000000</item>
</style>

文本样本如下:

有风险的人: 前往贾第虫病常见国家的游客 育儿环境中的人们 与患有该疾病的人密切接触的人 吞下受污染饮用水的人 从湖泊或河流中饮用未经处理的水的背包客或露营者 与患有该疾病的动物接触的人 与男人发生性关系的男人

然而,当我在调用所有新行字符后运行应用程序时消失。如果有办法解决这个问题我真的很感激吗?如果是这样的话?

2 个答案:

答案 0 :(得分:0)

BufferedReader的 readLine 方法会跳过行终止字符(docs)。由于您只是将其显示在TextView上,因此您只需手动附加换行符:

    BufferedReader bReader = new BufferedReader(new InputStreamReader(iStream));
    try {
        while ((line = bReader.readLine()) != null) {
            finalString.append(line);
            finalString.append("\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

注意:不确定它是否在代码的某些部分,但请务必在使用后关闭 bReader

答案 1 :(得分:0)

我认为readLine()不包括读取行末尾的新行字符,因此您必须明确添加它。

    while ((line = bReader.readLine()) != null) {
        finalString.append(line);
        finalString.append('\n');
    }