zoukankan      html  css  js  c++  java
  • Java读取properties配置文件

      1 import java.io.BufferedReader;
      2 import java.io.IOException;
      3 import java.io.InputStream;
      4 import java.io.InputStreamReader;
      5 import java.io.UnsupportedEncodingException;
      6 import java.util.Enumeration;
      7 import java.util.Iterator;
      8 import java.util.Properties;
      9 import java.util.Set;
     10 
     11 import javax.servlet.ServletContext;
     12 import javax.servlet.ServletException;
     13 import javax.servlet.annotation.WebServlet;
     14 import javax.servlet.http.HttpServlet;
     15 
     16 @WebServlet(urlPatterns={"/PropertiesServlet"},loadOnStartup=1)
     17 public class PropertiesServlet extends HttpServlet {
     18     
     19     private static final long serialVersionUID = 1L;
     20     
     21     public PropertiesServlet() {
     22         super();
     23     }
     24     
     25     public void init()throws ServletException{  
     26         
     27         // 获取 ServletContext
     28         ServletContext context = this.getServletContext();
     29         // 获取 ServletConfig
     30         //ServletConfig servletConfig = this.getServletConfig();
     31         
     32         // 获取所有初始化参数的名称
     33         Enumeration<String> enumer = context.getInitParameterNames();
     34         //Enumeration<String> initParameterNames = servletConfig.getInitParameterNames();// 同样是获取所有初始化参数的名称
     35         //enumer = initParameterNames;
     36         
     37         while (enumer.hasMoreElements()) {
     38             String name = enumer.nextElement();
     39             String value = context.getInitParameter(name);// 通过参数名获取参数值
     40             System.out.println(name + ":" + value);
     41         }
     42         
     43         
     44         // 通过 ServletContext 获取资源文件输入流 InputStream 的三种方式
     45         //URL url = context.getResource("WEB-INF/classes/jdbc.properties");
     46         //InputStream is1 = url.openStream();
     47         
     48         //String path = context.getRealPath("WEB-INF/classes/jdbc.properties");
     49         //File file = new File(path);
     50         //InputStream is2 = new FileInputStream(file);
     51         
     52         InputStream is3 = context.getResourceAsStream("WEB-INF/classes/jdbc.properties");//方便
     53         
     54         // 获取 ClassLoader 的三种方式
     55         //ClassLoader classLoader1 = this.getClass().getClassLoader();
     56         //ClassLoader classLoader2 = Thread.currentThread().getContextClassLoader();
     57         //ClassLoader classLoader3 = ClassLoader.getSystemClassLoader();
     58         
     59         // 通过 ClassLoader 获取 InputStream
     60         //InputStream is = classLoader3.getResourceAsStream("jdbc.properties");
     61         
     62         //InputStream is4 = ClassLoader.getSystemResourceAsStream("jdbc.properties");//方便
     63         
     64         Properties prop = new Properties();
     65         
     66         //Java在网络传输中使用的编码是"ISO-8859-1",如果配置文件有中文,可能出现乱码问题
     67         //解决方案:1.native2ascii.exe将中文转成Unicode编码;2.将InputStream封装成Reader
     68         //InputStream字节流无法读取中文,把InputStream转换成Reader字符流,将字节解码为字符来读取中文
     69         InputStreamReader isr = null;
     70         try {
     71             isr = new InputStreamReader(is3, "UTF-8");
     72         } catch (UnsupportedEncodingException e) {
     73             e.printStackTrace();
     74         }
     75         //其中UTF-8,用于明确指定解码字符流的字符集
     76         //不指定则默认使用OS的,这会造成同一份配置文件同一份代码,在linux和windows上、英文windows和中文windows之间的表现都不一致
     77         //这个参数应该和具体读取的properties文件的编码格式匹配
     78         
     79         
     80         //建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)
     81         //如果不缓冲的话会通过read方法一次又一次的访问文件
     82         BufferedReader bf = new BufferedReader(isr);
     83         
     84         //将内容读到 Properties 里
     85         try {
     86             prop.load(bf);
     87         } catch (IOException e) {
     88             // TODO Auto-generated catch block
     89             e.printStackTrace();
     90         }
     91         
     92         String user = prop.getProperty("姓名");
     93         System.out.println(user);
     94         
     95         // 获取所有Property 的 Name
     96         Set<String> set = prop.stringPropertyNames();
     97         Iterator<String> it = set.iterator();
     98         while (it.hasNext()) {
     99             String name = it.next();
    100             String value = prop.getProperty(name);// 通过name获取value
    101             System.out.println(name + ":" + value);
    102         }
    103     }
    104 }
  • 相关阅读:
    hadoop
    spark
    docfetcher
    redis参考资料
    Redis系列-存储篇sorted set主要操作函数小结
    predis操作大全
    composer安装使用
    寒假作业2
    寒假作业随笔
    面向对象寒假作业编程题
  • 原文地址:https://www.cnblogs.com/guodefu909/p/5794195.html
Copyright © 2011-2022 走看看