扫描程序警告:资源泄漏:<unassigned closeble =“”value =“”>

时间:2016-04-14 13:02:56

标签: java java.util.scanner resource-leak

我正在读取文件并将其内容存储在字符串中。代码给出了一个警告:资源泄漏:。我该如何解决?

public static String JsonFileToString(String FileName)
{
    String FileContent=null;
    try {

        FileContent = new Scanner(new File("src/main/resources/" + FileName)).useDelimiter("\\Z").next();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }


    return FileContent;

}

2 个答案:

答案 0 :(得分:0)

您必须将扫描仪分配给变量,以便可以在finally块中关闭它。

String FileContent=null;
        Scanner sc = null;
        try {

            sc = new Scanner(new File("src/main/resources/" + ""));
            FileContent = sc.useDelimiter("\\Z").next();


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            sc.close();
        }

答案 1 :(得分:0)

您没有关闭您为阅读文件而创建的Scanner,因此该文件随后仍然保持打开状态。

假设您使用的是Java 7+,请使用try-with-resources确保清理扫描程序:

try (Scanner sc = new Scanner(new File("src/main/resources/" + FileName)).useDelimiter("\\Z")) {
  return sc.next();
} catch (FileNotFoundException e) {
    e.printStackTrace();
}