我正在使用此代码来读取Linux SWAP空间:
public void getSwap() throws FileNotFoundException, IOException
{
Pattern pattern = Pattern.compile("([\\/A-Za-z0-9]+)[\\s]+([a-z]+)[\\s]+([0-9]+)[\\s]+([0-9]+)[\\s]+([\\-0-9]+).*");
BufferedReader reader = new BufferedReader(new FileReader("/proc/swaps"));
String s = reader.readLine();
while (s != null)
{
Matcher matcher = pattern.matcher(s);
if (matcher.matches())
{
System.out.println(s);
System.out.println(matcher.group(3));
System.out.println(matcher.group(4));
}
s = reader.readLine();
}
reader.close();
}
我想修改代码,以便在没有文件/ proc / swaps时返回null。我不想在文件丢失时中断代码。
答案 0 :(得分:1)
您可以非常轻松地创建文件对象,并使用.exists()方法检查其存在(及其isDirectory()方法以确保其不是目录),而不是在缓冲读者创建之前。
如果不存在,你可以采取任何你想要的行动。
响应您的代码请求:我没有尝试编译它,但它应该这样工作:
File file = new File("/proc/swaps");
if (!file.exists()) {
System.err.println("/proc/swaps did not exist!");
return null;
}
else if (file.isDirectory()) {
System.err.println("/proc/swaps is a directory, not a file.");
return null;
}
你还应该将你的函数包装在try { } catch() {}
中并处理异常,并附上一条评论,因为你事先检查了它是否存在。这样您就不必声明函数会抛出已检查的异常。