package com.itheima.utils; 
 
import java.io.FileReader; 
import java.io.InputStream; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.Properties; 
 
import com.itheima.jdbc.Demo01; 
 
public class JDBCUtils { 
        /* 
         * 提供方法获得连接 
         */ 
        public static Connection getConnection() { 
                Connection conn = null; 
                try { 
                        // FileReader reader = new FileReader("jdbc.properties"); 
                        // 只能读取项目根目录下面的配置文件 
 
                        /* 
                         * JAVA在运行是,会去项目对应类的字节码文件(.class)所在的根目录(D:\itcast代码\ee43\day09\bin),使用类加载器ClassLoader, 
                         * 放置到JAVA虚拟机中执行 
                         */ 
                        InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties"); 
 
                        // 配置文件的工具类 
                        Properties prop = new Properties(); 
                        // 加载文件流 
                        prop.load(in); 
                        String driver = prop.getProperty("jdbc.driver"); 
                        String url = prop.getProperty("jdbc.url"); 
                        String username = prop.getProperty("jdbc.username"); 
                        String password = prop.getProperty("jdbc.password"); 
 
                        Class.forName(driver); 
                        // 2获得连接 
                        conn = DriverManager.getConnection(url, username, password); 
                } catch (Exception e) { 
                        e.printStackTrace(); 
                } 
                return conn; 
 
        } 
 
        /* 
         * 释放资源 
         */ 
        public static void closeResource(ResultSet rs, Statement st, Connection conn) { 
                try { 
                        if (rs != null) {// 调用closeResource方式时,参数有可能为null 
                                rs.close(); 
                        } 
                } catch (SQLException e) { 
                        e.printStackTrace(); 
                } finally { // 即使resultSet关闭失败,finally语句块也会被执行 
                        try { 
                                if (st != null) { 
                                        st.close(); 
                                } 
                        } catch (SQLException e) { 
                                e.printStackTrace(); 
                        } finally { 
                                try { 
                                        if (conn != null) { 
                                                conn.close(); 
                                        } 
                                } catch (SQLException e) { 
                                        e.printStackTrace(); 
                                } 
                        } 
                } 
 
        } 
} 
 
 
请问下面这句中的流为什么不关?不是说流都要关闭的么? 
InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties"); |   
        
 
    
    
    
     
 
 |