有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    使用try with resources语句

    如果从try块之前的任何代码行引发异常,则FileOutputStream永远不会关闭。因此,声纳警告

    另外,缩进代码,不要捕捉异常(你应该有另一个警告),不要像现在这样忽略异常