在文件android中执行linux命令和存储输出

时间:2017-08-08 09:19:26

标签: android linux

我想使用android执行'top -n 1'命令,并将top命令的输出存储在我设备内部存储器的文件中,如果可能的话。否则该文件应存储在SD卡中。我使用以下代码来实现它。

File logFile = new File(getFilesDir().getAbsolutePath()+File.separator+"logtex.txt");
            if(!logFile.exists())
            {
                logFile.createNewFile();
            }

            logFile.setExecutable(true,false);
            logFile.setReadable(true,false);
            logFile.setWritable(true,false);
            Log.e("executeToplog", "err in");
           Runtime.getRuntime().exec("top -n 1 > /data/user/0/com.example.abcdef.memcpuusage/files/logtex.txt ");

但它似乎不起作用。应该对代码做出哪些更改?

1 个答案:

答案 0 :(得分:0)

我不喜欢用输出填充文件的想法。我会尝试关注

Process process = Runtime.getRuntime ().exec ("top -1 1");
Reader reader = new InputStreamReader (process.getInputStream ());

// simple approach, omit some checkings, not compiled or tested, so may still fail
FileWriter writer = new FileWriter ("top.log");
for (int chr; (chr = reader.read ()) != –1;) {
  writer.append((char) chr);
}
writer.close()

但是,它可能是android不支持“top”,可能是你需要应用完整路径(在我的ubuntu / usr / bin / top上)

当您需要将输出放入文件时,请将阅读器的内容放入该文件中。 “>” 中是shell的一个特性,而不是exec的特性