我使用以下测试代码:
$ 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权限?你能给我一些建议吗?
答案 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