Servlet读取文件的最好的方式
2016-01-24 11:00
267 查看
在java web 开发的时候不可避免的会读取文本信息,但是方式不同,所付出的代价也是不一样的,今天学到了一个比较好的实用性的技巧,拿来与大家分享一下。
先是目录结构:
下面看一看目标文件的内容吧db.properties文件:
常规方式
小结:
采用这个方式会很繁琐,而且对于文件的操作也不是很方便,我们需要手动的处理很多信息。
java web 方式
运行结果:
小结:
采用这个方式是利用了在web项目中ServletContext这个类的共享信息的特征
读取文件的目录是相对于这个项目本身的相对的路径,这样显得更加的灵活
使用Properties类进行对属性值的获取,其底层是map的键值对的实现原理
使用属性配置文件的好处在于,在修改代码的时候只需要修改文件中的信息即可。代码的可维护性大大的得到了增强
使用类装载器进行读取类路径下文件信息(src路径下的配置文件) 的方法
程序运行结果是:
java web项目获得的类路径下的文件的属性配置文件信息是:mysql
这样也可以达到相同读取文件信息的效果!
读取属性配置文件
之所以说成是读取属性(properties)文件,是因为它在开发中使用的频率较高,而且也不像读取xml文件那样的复杂。下面请看先是目录结构:
下面看一看目标文件的内容吧db.properties文件:
driver = com.mysqy.jdbc.Driver url = jdbc:mysql://localhost:3306 user = root password = mysql
常规方式
FileInputStream fis = new FileInputStream(new File("db.properties")); System.out.println(fis);
小结:
采用这个方式会很繁琐,而且对于文件的操作也不是很方便,我们需要手动的处理很多信息。
java web 方式
response.getWriter().append("Served at: ").append(request.getContextPath()); FileInputStream fis = (FileInputStream) this.getServletContext() .getResourceAsStream("/WEB-INF/classes/db.properties"); Properties properties = new Properties(); properties.load(fis); String url = properties.getProperty("url"); System.out.println(url);
运行结果:
jdbc:mysql://localhost:3306
小结:
采用这个方式是利用了在web项目中ServletContext这个类的共享信息的特征
读取文件的目录是相对于这个项目本身的相对的路径,这样显得更加的灵活
使用Properties类进行对属性值的获取,其底层是map的键值对的实现原理
使用属性配置文件的好处在于,在修改代码的时候只需要修改文件中的信息即可。代码的可维护性大大的得到了增强
使用类装载器进行读取类路径下文件信息(src路径下的配置文件) 的方法
ClassLoader loader = MyServlet.class.getClassLoader(); InputStream is = (InputStream) loader.getResourceAsStream("db.properties"); Properties properties = new Properties(); properties.load(is); String password = properties.getProperty("password"); System.out.println("java web项目获得的类路径下的文件的属性配置文件信息是:"+ password);
程序运行结果是:
java web项目获得的类路径下的文件的属性配置文件信息是:mysql
这样也可以达到相同读取文件信息的效果!
相关文章推荐
- Android中数据的存储方式
- Servlet读取文件的最好的方式
- iOS之UIScrollview添加约束图文详解
- Git基本操作
- 40. Combination Sum II leetcode Python 2016 new season
- eclipse环境搭建之四:Go。但没有成功,后转为LiteIDE。
- 51nod1393 01串相等 思维
- Codeforces Round #340 (Div. 2)
- Color Me Less
- AQS的原理(1)
- enum枚举
- Android开发基础之Adapter
- android基本架构
- Android仿微信主界面设计
- SqlServer Mysql数据库修改自增列的值及相应问题的解决方案
- struts2拦截器的实现原理及源码剖析
- 2016蓝桥杯假期任务之《圆周率》
- UVA-PIE
- Json数据手动解析
- Codeforces 617 C. Watering Flowers