扫描仪警告:资源泄漏:<unassigned closeble value>
Scanner warning: Resource leak : <unassigned closeble value>
我正在读取一个文件并将其内容存储在一个字符串中。代码给我一个警告: 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;
}
您必须将 Scanner 分配给一个变量,以便您可以在 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();
}
您没有关闭为读取文件而创建的 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();
}
我正在读取一个文件并将其内容存储在一个字符串中。代码给我一个警告: 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;
}
您必须将 Scanner 分配给一个变量,以便您可以在 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();
}
您没有关闭为读取文件而创建的 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();
}