matcher.group(1) не возвращает результата
public class GetProp extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String file_proc = readFile();
TextView tv = (TextView)findViewById(R.id.tv);
tv.setText("Read File contents from SDCARD : \n" + file_proc);
}
public String readFile(){
BufferedReader rdr;
String proc = "";
String line;
int lineNumber = 0;
try {
rdr = new BufferedReader(new FileReader("/proc/cpuinfo"));
while ((line = rdr.readLine()) != null) {
lineNumber++;
Matcher matcher = Pattern.compile("Processor: (.*)").matcher(line);
if (matcher.find()) {
proc = matcher.group(1);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return proc;
}
}
Я хочу напечатать одну строку из файла /proc/cpuinfo txt, например, Processor: "RESULT", где RESULT - matcher.group(1). Но у меня нет текста в результате, где моя проблема?
1 ответ
Решение
Это то, что мой /proc/cpuinfo
похоже:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 42
/* etc */
Есть две проблемы с вашим регулярным выражением:
- Регулярные выражения чувствительны к регистру. Либо измените его на
processor
или используйтеPattern.compile(..., Pattern.CASE_INSENSITIVE)
, - Есть пробел между
processor
и толстая кишка. Вы должны изменить свое регулярное выражение наprocessor\\s*: (.*)