-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;        
    }
}

Processor: "RESULT" のように、/proc/cpuinfo txt ファイルから 1 行を出力したいのですが、RESULT は matcher.group(1) です。しかし、結果にテキストがありません。どこに問題がありますか?

4

1 に答える 1

2

これは私/proc/cpuinfoのように見えるものです:

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

正規表現には 2 つの問題があります。

  1. 正規表現では大文字と小文字が区別されます。に変更するかprocessor、 を使用してPattern.compile(..., Pattern.CASE_INSENSITIVE)ください。
  2. processorとコロンの間に空白があります。正規表現を次のように変更する必要があります processor\\s*: (.*)
于 2013-07-21T19:10:43.763 に答える