我试图抓取遵循预设引用的一行数据
这是我到目前为止的代码,它只是抓取文本中的所有内容
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/