在 Java 中尝试使用多个资源

2022-09-01 03:39:32

我是新手,我想知道对于资源,我是否必须为每个资源添加一个,或者它将与上面的代码一起使用Java8AutoCloseabletryresource

try (Connection conn = getConnection();) {

            Statement stmt = conn.createStatement();

            ResultSet rset = stmt.executeQuery(sql);

            while (rset.next()) {
                TelefonicaDataVO vo = new TelefonicaDataVO();
                vo.setTelefonicaDataId(rset.getString("Telefonica_PSD_ID"));
                vo.setReceptionDate(nvl(rset.getTimestamp("CREATION_DATE")));
                vo.setMessage(nvl(rset.getString("MESSAGE")));
                ret.add(vo);
            }
        }

答案 1

尝试使用资源可以与多个资源一起使用,方法是将它们全部声明在try块中,并且此功能在java 7中引入,而不是在java 8中引入如果您有多个资源,您可以如下所示给出

try (
        java.util.zip.ZipFile zf =
             new java.util.zip.ZipFile(zipFileName);
        java.io.BufferedWriter writer = 
            java.nio.file.Files.newBufferedWriter(outputFilePath, charset)
    ) {
        // Enumerate each entry
        for (java.util.Enumeration entries =
                                zf.entries(); entries.hasMoreElements();) {
            // Get the entry name and write it to the output file
            String newLine = System.getProperty("line.separator");
            String zipEntryName =
                 ((java.util.zip.ZipEntry)entries.nextElement()).getName() +
                 newLine;
            writer.write(zipEntryName, 0, zipEntryName.length());
        }
    }

在此示例中,该语句包含两个由分号分隔的声明:ZipFileBufferedWriter。当紧随其后的代码块终止时(正常终止或由于异常),BufferedWriter 和 ZipFile 对象的 close 方法将按此顺序自动调用。请注意,资源的关闭方法的调用顺序与它们的创建顺序相反try-with-resources

有关详细信息,请参阅文档


答案 2

推荐