【发布时间】:2018-03-26 10:02:18
【问题描述】:
我想从 Java 中读取 /sys/fs/cgroup/ 文件(例如 cpuacct.usage)的内容。我已经实现了基于this 答案的阅读算法。
问题是 cgroup 文件的长度默认为 0。链接答案中列出的每个算法都会在开始读取文件之前确定文件的大小,并且由于 file.length() 返回 0,它将尝试从文件中读取 0 个字节。
这里是读取算法:
private String readFile(File file) {
DataInputStream stream = null;
String content = "";
try {
stream = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));
final byte[] data = new byte[(int) file.length()]; // new byte[1024] throws exception
stream.readFully(data);
content = new String(data);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (stream != null) {
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return content;
}
【问题讨论】:
标签: java datainputstream cgroups