java再次关闭这个“FileOutputStream”声纳
我在关闭声纳的“FileOutputStream”时遇到了麻烦。即使我关闭了文件。从声纳的文件中,我不明白这个错误。 我看了看帖子 SONAR issue - Close this FileInputStream。 这也不能解决我的问题
public void trainL2lSupport(String training_path, String model_path) throws Exception {
BasicConfigurator.configure();
String[] options = { "-s 1" };
FileOutputStream ms = new FileOutputStream(model_path); // This one is producing the error.
classifier.setOptions(options);
logger.info(msg + classifier.globalInfo());
loader.setFile(new File(training_path));
Instances data_set = loader.getDataSet();
data_set.setClassIndex(data_set.numAttributes() - 1);
classifier.buildClassifier(data_set);
Evaluation evaluation = new Evaluation(data_set);
evaluation.crossValidateModel(classifier, data_set, 40, new Random(1));
logger.info(evaluation.toSummaryString());
logger.info(msg1 + timer.stop());
// oos = new ObjectOutputStream(ms);
try {
ObjectOutputStream oos = new ObjectOutputStream(ms);
oos.writeObject(classifier);
oos.flush();
oos.close();
logger.info(msg3+ evaluation.toSummaryString());
logger.info(msg1 + timer.stop());
logger.info("File closed safetly");
} catch(Exception e) {
}
finally {
ms.close();
}
}
如何解决
# 1 楼答案
使用try with resources语句
如果从try块之前的任何代码行引发异常,则FileOutputStream永远不会关闭。因此,声纳警告
另外,缩进代码,不要捕捉异常(你应该有另一个警告),不要像现在这样忽略异常