2012-01-31 7 views
1

我想读取Android ICS中的/ proc/net/xt_qtaguid/stats,它记录所有接口和应用程序的流量统计信息。以下是代码片段:为什么我无法通过Android中的FileReader正确读取/ proc/net/xt_qtaguid/stats ICS

String line = null; 
BufferReader reader = new BufferedReader(new FileReader(new File("/proc/net/xt_qtaguid/stats"))); 

line = reader.readLine();/*Here I can read the 1st line correctly, it return "idx iface acct_tag_hex..."*/ 
splitLine(line, keys); 
line = reader.readLine();//!!!!!Read next line, it returns null!!!!!! 

如果我的猫这个文件,它会显示:

IDX IFACE acct_tag_hex uid_tag_int cnt_set rx_bytes rx_packets tx_bytes tx_packets rx_tcp_bytes rx_tcp_packets rx_udp_bytes rx_udp_packets rx_other_bytes rx_other_packets tx_tcp_bytes tx_tcp_packets tx_udp_bytes tx_udp_packets tx_other_bytes tx_other_packets

2 rmnet0 0x0 0 0 6266 105 8882 121 1428 30 4838 75 0 0 208 4 2552 44 6122 73

3 rmnet0 0x0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

4 rmnet0为0x0 1000 0 0 0 2262 39 0 0 0 0 0 0 0 0 2262 39 0 0

5 rmnet0为0x0 1000 1 0 0 290 5 0 0 0 0 0 0 0 0 290 5 0 0

6 rmnet0为0x0 10004 0 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

7 rmnet0为0x0 10004 1 20177 36 7037 81 20177 36 0 0 0 0 7037 81 0 0 0 0

我发现NetworkStatsFactory.java(Android原始类)也读取此文件并使用相同的方法。 我尝试使用这个类,它也无法正确读取:

try{ 
    NetworkStats stats = new NetworkStatsFactory().readNetworkStatsDetail(10004); 
    stats.size();//size is ZERO! 
} 
catch(IllegalStateException e){ 
    //Do nothing 
} 

难道谷歌工程师做出同样的错误? :)

回答

6

我已经得到了答案,这个虚拟文件的read_proc函数限制了uid,每个应用程序只能读取标题和它自己的行。

+0

你应该接受你自己的答案。 – 2012-02-20 05:22:32

相关问题