Android 文本文件(在原始目录中)未被正确读取

标签 android android-layout

我想从放在 res/raw/text 中的文本文件中读取 我成功阅读了,但在输出的每一行之后都有一个奇怪的字符,例如“[]”。 这个字符位于输出中每一行的末尾,我的源文件(文本)中有新行。 不知道如何从每一行中删除这个字符..

  public class HelpActivity extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.help);
    TextView textview = (TextView)findViewById(R.id.TextView_HelpText);
    textview.setText(readTxt());

}
private String readTxt() {
     InputStream is = getResources().openRawResource(R.raw.text);
        ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
         int i;

        try
        {

            i = is.read();
            while (i != -1)
            {
                byteArray.write(i);
                i = is.read();
            }
            is.close();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block

            e.printStackTrace();
        }
        return byteArray.toString();

最佳答案

您可能会选择不需要的或未格式化的 CR/LF 字符,这就是将文本拆分为新行的原因。如果您使用的是 Windows,则该行的末尾将同时出现 CR 和 LF。在 OS X 和 Linux 上,只有一个 LF。 (旧 Mac 只有一个 CR。)

因此,如果您在 Windows 中保存文本文件,并在 Android (Linux) 上显示它,那么未格式化的文本可能会显示额外的 CR 字符,每行末尾一个。

要修复它,试试这样的方法

private String readTxt() {
    InputStream is = getResources().openRawResource(R.raw.text);
    BufferedReader r = new BufferedReader(new InputStreamReader(is));
    StringBuilder total = new StringBuilder();
    String line;
    while ((line = r.readLine()) != null) {
        total.append(line);
    }
    return total.toString();
}

部分借自https://stackoverflow.com/a/2549222/324625

关于Android 文本文件(在原始目录中)未被正确读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8421978/

相关文章:

android - Sinch Android Messaging Tutorial 应用程序在登录时崩溃并且客户端未启动

java - 如何将静态值赋给HashMap?

android - XML 检测 Debug模式

java - 删除 BottomNavigationView 图标和中心标题

android - CardView 在 API 19 上消失

android - 每个新录制的声音都有不同的文件名

android - 将 Material Design 图标与 Xamarin 表单一起使用 - 我错过了什么?

android - 黑屏而不是多纹理

android - 在有问题地将应用程序区域设置更改为 RTL 语言后,如何在不重新启动 Activity 的情况下刷新 View

android - gravity right 和 end 的区别