我正在获得kb,但我想要内存mb如何才能得到它,因为我得到了“MemTotal: 855000kb”,但我想要855mb如何获得内存Mb和如何获得唯一的数字是不想要Memtotal和kb
public void getTotalMemory() {
{
String str1 = "/proc/meminfo";
String str2;
String[] arrayOfString;
long initial_memory = 0;
try {
FileReader localFileReader = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader( localFileReader, 8192);
str2 = localBufferedReader.readLine();//meminfo
arrayOfString = str2.split("\\s+");
for (String num : arrayOfString) {
Log.i(str2, num + "\t");
}
//total Memory
initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;
localBufferedReader.close();
}
catch (IOException e)
{
}
} 发布于 2013-06-14 00:41:50
1MB中有1024KB,因此您可以将KB除以1024,而不是1000,以获得MB。这是如果它真的以KB (技术上是千比字节,KiB)为单位进行报告的话。大多数开发人员将千字节(KB)称为1024字节,而不是1000字节。
1KB = 2^10字节
1MB = 2^20字节
1 1GB = 2^30字节
发布于 2015-03-19 23:31:41
要彻底关闭资源,请将try内的close()调用替换为finally子句中的调用:
...
finally{
try {
if (localBufferedReader != null) {
localBufferedReader.close();
}
} catch (IOException e) {}
}发布于 2013-06-14 01:44:54
您可以使用正则表达式仅获取数字,然后使用数学
string result = Regex.Replace(input, @"[^\d]", "");但是如果MemTotal总是以kb为单位返回,我就不用了。如果也可以返回其他字符,比如mb,那么也可以获取最后两个字符,并根据这两个字符进行计算。
抱歉,上面的c#代码:)到了黑暗面
String result = input.replaceAll("[^\\d]", "");https://stackoverflow.com/questions/17092387
复制相似问题