他是我的代码:
File f;
FileInputStream inputStream;
byte[] buffer = null;
try {
f=new File("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq");
if(f.exists()){
inputStream = new FileInputStream(f);
inputStream.read(buffer);
}
Log.i("informacja","Czytam");
} catch (Exception e) {
// TODO Auto-generated catch block
Log.i("informacja",e.toString());
}
文件路径正确,文件存在。但总是在inputStream.read(buffer)中我得到NullPointerException。 这是我的清单的一部分:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
任何人都可以建议我在哪里犯了错误吗?
@Update。感谢您的代码段。现在我可以阅读但是: 这就是我得到的:[B @ 41a743c8 我应该得到什么:1000000
答案 0 :(得分:2)
我能够阅读猫的输出
ProcessBuilder cmd;
String result = "";
try {
String[] args = { "/system/bin/cat", "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq" };
cmd = new ProcessBuilder(args);
Process process = cmd.start();
InputStream in = process.getInputStream();
byte[] re = new byte[32768];
int read = 0;
while ( (read = in.read(re, 0, 32768)) != -1) {
String string = new String(re, 0, read);
Log.e(getClass().getSimpleName(), string);
result += string;
}
in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
return result;
并将其作为普通文件打开
String result = "";
try {
File file = new File("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq");
InputStream in = new FileInputStream(file);
byte[] re = new byte[32768];
int read = 0;
while ( (read = in.read(re, 0, 32768)) != -1) {
String string = new String(re, 0, read);
Log.e(getClass().getSimpleName(), string);
result += string;
}
in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
return result;
答案 1 :(得分:1)
Android应用程序不会在未经修改的设备上以root身份运行,因此您无法在不设备设备的情况下从/sys
文件夹中读取。
答案 2 :(得分:1)
问题出在这里 - &gt; byte[] buffer = null;
和inputStream.read(buffer);
缓冲区仍然为空,请尝试以下方法:
InputStream is = new FileInputStream(f);
byte[] b = new byte[is.available()];
is.read(b);
希望这有帮助,祝你好运^^
P.S。不要忘记设置所有必要的权限
修改:
要读取文件,您需要解析它。
字符串内容的字符串结果可以通过以下方式获得:String fileContent = new String(b); //the byte we read earlier
从那里,您必须解析文件以获得所需的值。为了解析文件,您必须知道文件结构并根据需要创建解析方法。