Java代码中的java.io.FileNotFoundException

时间:2014-08-18 19:18:32

标签: java

我正在使用此代码来读取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。我不想在文件丢失时中断代码。

1 个答案:

答案 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() {}中并处理异常,并附上一条评论,因为你事先检查了它是否存在。这样您就不必声明函数会抛出已检查的异常。