通过编码获得数据分区的大小

时间:2012-06-06 06:17:50

标签: android

我使用以下测试代码:

  $ 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权限?你能给我一些建议吗?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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