1

他是我的代码:

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" />

谁能建议我在哪里犯了错误?

@更新。感谢您的代码片段。现在我可以阅读但是:这就是我得到的:[B@41a743c8 我应该得到的:1000000

4

3 回答 3

2

我能够读取 cat 的输出

    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;
于 2013-05-28T12:33:44.280 回答
1

Android 应用程序不会在未修改的设备上以 root 身份运行,因此您无法在没有 root 设备的情况下从/sys文件夹中读取。

于 2013-05-28T12:18:10.227 回答
1

问题出在这里 -->byte[] buffer = null;inputStream.read(buffer);

缓冲区仍然为空,试试这个:

    InputStream is = new FileInputStream(f);
    byte[] b = new byte[is.available()];
    is.read(b);

希望这会有所帮助,祝你好运^^

PS不要忘记设置所有必要的权限

编辑

要读取文件,您需要对其进行解析。字符串内容的字符串结果可以通过以下方式获得:String fileContent = new String(b); //the byte we read earlier

从那里,您必须解析文件以获得所需的值。为了解析文件,您必须知道文件结构并根据需要创建解析方法。

于 2013-05-28T12:21:27.290 回答