2013-07-21 4 views
-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 текстового файла, как процессор: "РЕЗУЛЬТАТ", где РЕЗУЛЬТАТ является matcher.group (1). Но у меня нет текста в результате, где моя проблема?matcher.group (1) не возвращает никакого результата

+0

Ну, с помощью 'group (1)' было бы началом. –

+0

Возможно, вы не найдете никаких совпадений. Проверьте вход. – Keppil

ответ

2

Это то, что мой /proc/cpuinfo выглядит следующим образом:

processor : 0 
vendor_id : GenuineIntel 
cpu family : 6 
model  : 42 
/* etc */ 

Есть две проблемы с вашим регулярным выражением:

  1. Регулярные выражения чувствительны к регистру. Либо измените его на processor, либо используйте Pattern.compile(..., Pattern.CASE_INSENSITIVE).
  2. Пробел между processor и толстой кишкой. Вы должны изменить свое регулярное выражение на processor\\s*: (.*)
+0

Второй пункт работает, thx) – user1835337