0

私は次のコードを持っています:

    private String ReadCPUinfo()
 {
  ProcessBuilder cmd;
  String result="";

  try{
   String[] args = {"/system/bin/cat", "/proc/cpuinfo"};
   cmd = new ProcessBuilder(args);

   Process process = cmd.start();
   InputStream in = process.getInputStream();
   byte[] re = new byte[1024];
   while(in.read(re) != -1){
    System.out.println(new String(re));
    result = result + new String(re);
   }
   in.close();
  } catch(IOException ex){
   ex.printStackTrace();
  }
  return result;
 }

結果として /proc/cpuinfo からの文字列。プロセッサ情報 (プロセッサ: WordIWantToExtract) を文字列として抽出して、TextView に配置する必要があります。私はPythonスクリプトでそれを行いました(cpuinfoをtxtファイルに出力し、「Processor」という単語で行番号を検索し、その行番号を返し、この行を編集して出力します)。これをJavaに移植するにはどうすればよいですか?

4

3 に答える 3

1

/proc/cpuinfoは単なるテキスト ファイルです。BufferedReaderを使用する代わりに、a を使用して内容を読むだけProcessBuilderです。正確な行を抽出するには、プレフィックス「Processor」を確認してください。

BufferedReader reader = 
        Files.newBufferedReader(Paths.get("/proc/cpuinfo"), StandardCharsets.UTF_8);

while ((line = reader.readLine()) != null) {
    Matcher m = Pattern.compile("Processor: (.*)").matcher(line);
    if (m.find()) {
        System.out.println("Processor is " + m.group(1));
        ...
    }
}
于 2013-06-18T19:42:11.997 に答える
0

JSONObject を使用します。「キー」プロセッサと必要な単語を使用してオブジェクトを作成できます。例えば、

Map<String, String> processors = new HashMap<String, String>();
loggingMap.put("Processor", "Word");
JSONObject jsonObject = new JSONObject();
jsonObject.element(processors);

行は {"Processor": "word", "Other Key": "Other Word"} のようになります。

次に、これをファイルに書き込むことができます。

jsonObject.write(Writer writer);

次に、ファイルから行を読み取って使用できます。

jsonObject.getString("Processor");

キーと値がある場合に備えて、HashMap を使用しました。

于 2013-06-18T19:46:44.497 に答える