在java web 开发的时候不可避免的会读取文本信息,但是方式不同,所付出的代价也是不一样的,今天学到了一个比较好的实用性的技巧,拿来与大家分享一下。

读取属性配置文件


之所以说成是读取属性(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

小结:

  1. 采用这个方式是利用了在web项目中ServletContext这个类的共享信息的特征
  2. 读取文件的目录是相对于这个项目本身的相对的路径,这样显得更加的灵活
  3. 使用Properties类进行对属性值的获取,其底层是map的键值对的实现原理
  4. 使用属性配置文件的好处在于,在修改代码的时候只需要修改文件中的信息即可。代码的可维护性大大的得到了增强

  • 使用类装载器进行读取类路径下文件信息(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


这样也可以达到相同读取文件信息的效果!

Servlet读取文件的最好的方式的更多相关文章

  1. 精通awk系列(3):铺垫知识:读取文件的几种方式

    回到: Linux系列文章 Shell系列文章 Awk系列文章 读取文件的几种方式 读取文件有如下几种常见的方式: 下面使用Shell的read命令来演示前4种读取文件的方式(第五种按字节数读取的方式 ...

  2. 【转】C#读取文件时的共享方式

    string sFileName = @"C:\Exchange.dat";System.IO.StreamReader file = new System.IO.StreamRe ...

  3. java读取文件的几种方式性能比较

    //普通输入流读取文件内容 public static long checksumInputStream(Path filename) { try(InputStream in= Files.newI ...

  4. Java读取文件的几种方式

    package com.mesopotamia.test; import java.io.BufferedReader; import java.io.ByteArrayInputStream; im ...

  5. 示例:Servlet读取文件内容并在页面打印输出

    package com.mhb; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; impo ...

  6. Servlet读取配置文件的三种方式

    一.利用ServletContext.getRealPath()[或getResourceAsStream()] 特点:读取应用中的任何文件.只能在web环境下. private void text3 ...

  7. servlet 读取文件

    读取pdf protected void service(HttpServletRequest request, HttpServletResponse response) throws Servle ...

  8. shell读取文件每一行的方式

    1.使用read命令读取一行数据 while read myline do echo "LINE:"$myline done < datafile.txt 2.使用read命 ...

  9. hadoop 读取文件的两种方式

    1.操作javaAPI方式 static{ URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); } public stat ...

随机推荐

  1. 笔记8 AOP练习2

    场景描述: 一张唱片有好多磁道,假设每个磁道只有一首歌,现在需要记录每首歌的播放次数,然后输出. 主要业务:歌曲播放 辅助功能:记录播放次数(切面) 1.创建唱片接口,CompactDiscs.jav ...

  2. synchronized修饰static方法与非static方法的区别

    1. 当synchronized修饰一个static方法时,多线程下,获取的是类锁(即Class本身,注意:不是实例),作用范围是整个静态方法,作用的对象是这个类的所有对象. 2. 当synchron ...

  3. RedisAsyncClientAdapter-------------接口继承

    public abstract class RedisAsyncClientAdapter<K, V, T extends RedisKeyAsyncCommands<K, V> & ...

  4. 0. 迷之 -> 和 .

    0. 迷之 -> 和 . 箭头(->):左边必须为指针: 点号(.):左边必须为实体. e.g.1 class class A{ public: play(); }; int main() ...

  5. Python中如何自定义一个计时器

    import time as t class MyTimer(): # 初始化构造函数 def __init__(self): self.prompt = "未开始计时..." s ...

  6. Node.js 网络

    稳定性: 3 - 稳定 net 模块提供了异步网络封装,它包含了创建服务器/客户端的方法(调用 streams).可以通过调用 require('net') 包含这个模块. net.createSer ...

  7. UltraISO安装centos7系统

    1. 使用最新版UltraISO将ISO镜像刻录到U盘一定要是最新版,试用版都可以,按下图操作: 2. U盘启动电脑进入安装界面正常情况下你应该会看到下面的这个界面: 选择第一项,然后按TAB键(在评 ...

  8. PHP 实例 AJAX 投票

    AJAX 投票 在下面的实例中,我们将演示一个投票程序,通过它,投票结果在网页不进行刷新的情况下被显示. Do you like PHP and AJAX so far? Yes: No: 实例解释 ...

  9. 巧用第三方快速开发Android App 热门第三方SDK及框架

    巧用第三方快速开发Android App 热门第三方SDK及框架 历经大半年的时间,终于是把这门课程给录制出来了,也就在今天,正式在慕课网上上线了 项目地址:巧用第三方快速开发Android App ...

  10. 安卓图片Bitmap一些旋转处理

    Bitmap convert(Bitmap a, int width, int height) { int w = a.getWidth(); int h = a.getHeight(); Bitma ...