3

我有测试代码使用:

  $ adb -s emulator-5554 shell

   # df
   df
 /dev: 47084K total, 0K used, 47084K available (block size 4096)
/sqlite_stmt_journals: 4096K total, 0K used, 4096K available (block size  4096)
/system: 73600K total, 73600K used, 0K available (block size 4096)
/data: 65536K total, 18464K used, 47072K available (block size 4096)
/cache: 65536K total, 1156K used, 64380K available (block size 4096)

你看到数据总共有 65536k 等等,我的问题是如何通过编码获得大小?如果我需要 root 对吗?你能给我一些建议吗?

4

2 回答 2

4
try {
 Runtime rt = Runtime.getRuntime();
 Process pcs = rt.exec("df /data");
 BufferedReader br = new BufferedReader(new InputStreamReader(pcs
       .getInputStream()));
 String line = null;
 while ((line = br.readLine()) != null) {
    Log.e("line","line="+line);
 }
 br.close();
 pcs.waitFor();

或者

    File path = Environment.getDataDirectory();
    android.os.StatFs stat = new android.os.StatFs(path.getPath());
    long blockSize = stat.getBlockSize();
    long availableBlocks = stat.getAvailableBlocks()*blockSize;
于 2012-06-06T06:41:53.160 回答
0

你不需要root权限。您可以通过以下方式获得它:

Runtime.getRuntime().freeMemory(); // Returns the amount of free memory resources which are available to the running program.

Runtime.getRuntime().maxMemory(); // Returns the maximum amount of memory that may be used by the virtual machine, or Long.MAX_VALUE if there is no such limit.

Runtime.getRuntime().totalMemory(); // total memory available for your app to run
于 2012-06-06T06:23:55.957 回答