java - Android:读取文本文件并抓取特定单词后面的行

标签 java android

我试图抓取遵循预设引用的一行数据

这是我到目前为止的代码,它只是抓取文本中的所有内容

public void onClick(View v) {
    // TODO Auto-generated method stub

    if (v.getId() == R.id.btnRead) {

        try {
            readfile();
        } catch (IOException e) {
            Toast.makeText(getApplicationContext(), "Problems: " + e.getMessage(), 1).show();
        }
    }

private void readfile() throws IOException {     

    String str="";
    StringBuffer buf = new StringBuffer();          
    InputStream is = this.getResources().openRawResource(R.drawable.test);
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));


    if (is!=null) { 

        while ((str = reader.readLine()) != null) { 

            buf.append(str + "\n" );


        }               
    }       
    is.close(); 
    Toast.makeText(getBaseContext(), buf.toString(), Toast.LENGTH_LONG).show();

我考虑过添加这样的东西

if (str == "name:"){

   reader.readNextLine();

    }
else {
    (buf.append("Referance not found" + "\n"));
}

这样它会找到预设的单词并捕获紧随其后的行 显然我做不到

readNextLine

所以尝试寻找另一种简单的方法

最佳答案

您的问题是您比较引用地址而不是值。

用于比较的运算符==仅对原始类型有效。字符串是一种对象类型。

要比较对象类型,您应该始终使用 equals 方法或 compareTo(如果对象支持)。

if("name".equals(str)) {
  reader.readNextLine();
} else {
  buf.append("Referance not found\n");
}

提示:

StringBuffer是线程安全的,你在那里不需要它。更好的选择是使用 StringBuilder

关于java - Android:读取文本文件并抓取特定单词后面的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13859691/

相关文章:

Java - 从对象获取具有公共(public)父类(super class)的字段列表

android - 为自定义对话框设置时间

android - Firebase 使用 Hashmap 在同一个 child 上推送数据

android - 假设 Gradle 依赖是 AAR 而不是 JAR

android - android中的浏览器检测

java - 如何防止机器人鼠标移动出屏幕

java - 仅使用一个列表就可以实现所有可能的单词排列

java - @ 在文件路径的开头

java - 带参数的 JUnit 测试

android - 使用 Ubuntu simg2img/make_ext4fs 解包/重新打包 android img