我进入kb但是我想要ram in mb我怎么能得到它因为我得到“MemTotal:855000kb”但我想要855mb如何在Mb获得ram以及如何获得唯一的数字是不想要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)
{
}
}
答案 0 :(得分:2)
要彻底关闭资源,请使用close()
子句中的调用替换try
内的finally
来电:
...
finally{
try {
if (localBufferedReader != null) {
localBufferedReader.close();
}
} catch (IOException e) {}
}
答案 1 :(得分:1)
1 MB中有1024 KB,因此您可以将KB除以1024而不是1000来获取MB。那就是它真的用KB报告(技术上是kibibytes,KiB)。大多数开发人员将千字节(KB)称为1024字节,而不是1000字节。
1KB = 2 ^ 10字节
1MB = 2 ^ 20字节
1GB = 2 ^ 30字节
答案 2 :(得分:1)
你可以使用正则表达式来获取数字,然后使用数学
string result = Regex.Replace(input, @"[^\d]", "");
但是如果MemTotal总是以kb返回,我就不会使用。如果还可以返回像mb这样的其他人也可以获得最后两个字符并根据它进行计算。
抱歉,上面代码为c#:)来到黑暗面String result = input.replaceAll("[^\\d]", "");
答案 3 :(得分:0)
我提供了更新的代码,以mb,Goodluck!
提供当前内存的printlnpublic static 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) {
//System.out.println(num + "\t");
}
//total Memory
initial_memory = Integer.valueOf(arrayOfString[1]).intValue();
initial_memory = initial_memory/1024;
System.out.println(initial_memory);
localBufferedReader.close();
}
catch (IOException e)
{
}
}