我想阅读android ics中的/proc/net/xt_qtaguid/stats,它记录所有接口和应用程序的流量统计。以下是代码段:

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_tcp_bytes rx_tcp_packets rx_udp_bytes rx udp_other_bytes rx other_packets tx tcp_bytes tx tcp_packets tx_udp_bytes tx udp_packets tx_other_bytes tx
2 rmnet0 0x0 0 6266 105 8882 121 1428 30 4838 75 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 0 0 0 0 0
4 rmnet0 0x0 1000 0 0 0 2262 39 0 0 0 0 0 0 2262 39 0
5 rmnet0 0x0 1000 1 0 0 290 5 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 0 0 0 0 0 0
7 rmnet0 0x0 10004 1 20177 36 7037 81 20177 36 0 0 0 7037 81 0 0 0
我发现NETWorkStaseStudio.java(Android原生类)也读取这个文件并使用相同的方法。
我试图使用这个类,但它也不能正确阅读:
try{
    NetworkStats stats = new NetworkStatsFactory().readNetworkStatsDetail(10004);
    stats.size();//size is ZERO!
}
catch(IllegalStateException e){
    //Do nothing
}

谷歌工程师也犯了同样的错误吗?:)

最佳答案

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

关于android - 为什么我无法通过Android ICS中的FileReader正确读取/proc/net/xt_qtaguid/stats,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9080229/

10-08 21:55