JAVAWEB静态代码块读取文件问题
来源:互联网 发布:域名别名是什么意思 编辑:程序博客网 时间:2024/05/19 13:10
package cn.util;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileReader;import java.io.IOException;import java.io.InputStream;import java.io.Reader;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 cn.test.ImageTest;public class JdbcUtils {private static Properties config = new Properties();static {try {System.out.println(123);InputStream in = null;Reader reader = null;//@SuppressWarnings("resource")try {//reader = new FileReader("db.properties");//ImageTest im = new ImageTest();//静态代码中不能够用文件的方式加载文件??????????????//FileInputStream fis = new FileInputStream(new File("db.properties")); in = new BufferedInputStream(new FileInputStream( new File("db.properties"))); } catch (Exception e) {e.printStackTrace();System.out.println("error");} finally {//in.close();}//FileInputStream fis = new FileInputStream("classpath:db.properties");config.load(in);//config.load(JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"));System.out.println(1456);//装载并实例化这个类Class.forName(config.getProperty("driver"));} catch (Exception e) {throw new ExceptionInInitializerError(e);}}public static Connection getConnection() throws SQLException {return DriverManager.getConnection(config.getProperty("url"),config.getProperty("username"),config.getProperty("password"));}public static void release(Connection conn , Statement st ,ResultSet rs){if(rs!=null){try {rs.close(); } catch (Exception e) {e.printStackTrace();}rs = null;}if(st!=null){try {st.close();} catch (Exception e) {e.printStackTrace();}st=null;}if(conn != null ){try {conn.close();} catch (Exception e) {e.printStackTrace();}conn = null;}}}
关于Properties的静态代码块读取方式,效率和安全性都很高,
但是怀疑有没有其他的方法可以读取到输入流,于是在Web项目下测试了一下,
发现会报文件找不到的错误。
原因是因为File是从Web应用的根目录读取文件的,
并不是从src和content中,所以放到这两个文件夹中都无法读取到文件,
与静态代码块无关。
结论:将db.properties文件放到应用根目录即可。
File是从应用启动根目录/绝对路径开始读取文件的。同类的FileReader应该也是。
而ClassLoader.getSystemResource(name)则是从类路径进行读取文件,会更方便一些?
0 0
- JAVAWEB静态代码块读取文件问题
- Java在静态代码块中读取properties文件的思考
- 通过静态代码块读取配置文件配置静态属性
- 静态代码块和构造代码块的相关问题
- java关于静态代码块的问题
- javaweb 中读取文件路径问题
- 静态代码块、非静态代码块
- 关于静态代码块,非静态代码块,构造函数的多态表现问题
- Static块(静态代码块)
- Static块(静态代码块)
- 构造块/静态代码块
- Static块(静态代码块)
- 普通代码块 静态块 构造块
- static静态代码块
- java 静态代码块
- 静态代码块
- 静态代码块
- 静态代码块
- 关于checkbox有了checked='checked' 却不显示对号的解决方法
- iOS 三种拨打电话
- Java排序算法--建立堆和堆排序(转)
- eclipse使用总结:workspace设置
- 2016-9-22题目:extern char* 与char[]
- JAVAWEB静态代码块读取文件问题
- 基于 Quartz 开发企业级任务调度应用
- STM32中GPIO工作模式
- 左手坐标系和右手坐标系(以及右手定则左手定则)
- 【2016-沈阳赛区网络赛-J】大素数模板(Count primes,uva 5901)
- 在windows上安装RabbitMQ
- Linux基本命令笔记
- 结构体三级排序(nyoj 17)
- Mac AppStore 登陆提示 未知错误