国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Properties類

2019-11-08 02:36:54
字體:
來源:轉載
供稿:網友

PRoperties類

Properties 類表示了一個持久的屬性集。Properties 可保存在流中或從流中加載。屬性列表中每個鍵及其對應值都是一個字符串。Properties 類在java中是個比較重要的類,主要用于讀取Java的配置文件,各種語言都有自己所支持的配置文件,配置文件中很多變量是經常改變的,這樣做也是為了方便用戶,讓用戶能夠脫離程序本身去修改相關的變量設置。

在線API文檔

http://www.apihome.cn/api/java/Properties.html


構造方法

Properties() //創建一個無默認值的空屬性列表。Properties(Properties defaults) //創建一個帶有指定默認值的空屬性列表。

常用方法

String getProperty(String key) //用指定的鍵在此屬性列表中搜索屬性。StringgetProperty(String key, String defaultValue) //用指定的鍵在屬性列表中搜索屬性。Object setProperty(String key, String value) //調用 Hashtable 的方法 put。void load(InputStream inStream) //從輸入流中讀取屬性列表(鍵和元素對)。void loadFromxml(InputStream in) //將指定輸入流中由 XML 文檔所表示的所有屬性加載到此屬性表中。void store(OutputStream out, String comments) //以適合使用 load(InputStream) 方法加載到 Properties 表中的格式,將此 Properties 表中的屬性列表(鍵和元素對)寫入輸出流。void storeToXML(OutputStream os, String comment, String encoding) //使用指定的編碼發出一個表示此表中包含的所有屬性的 XML 文檔。

創建properties文件

/** * 使用Properties類把我們的屬性保存一個properties文件 */ public static void test1(){ Properties p = new Properties(); p.setProperty("姓名", "LingDu"); p.setProperty("性別", "男"); p.setProperty("年齡", "18"); try { p.store(new FileOutputStream("a.properties"), "this is frist properties file"); } catch (IOException e) { e.printStackTrace(); } }

在保存properties文件的時候默認使用 ISO 8859-1 字符編碼寫入該流

1


可以在保存文件的時候設置一下編碼

p.store(new OutputStreamWriter(new FileOutputStream("b.properties"),"UTF-8"), "this is utf-8 encoding the properties file");

2


讀取properties文件

/** * 使用Properties類讀取properties文件 */ public static void test2(){ Properties p = new Properties(); try { //讀取properties文件,拿到鍵值對 p.load(new InputStreamReader(new FileInputStream("a.properties"))); Set<Entry<Object,Object>> set = p.entrySet(); for (Iterator<Entry<Object, Object>> iterator = set.iterator(); iterator.hasNext();) { Entry<Object, Object> entry = (Entry<Object, Object>) iterator.next(); System.out.println(entry.getKey() + "=" + entry.getValue()); } } catch (IOException e) { e.printStackTrace(); } }

9


創建XML文件

/** * 使用Properties類把我們的屬性保存一個XML文件 */ public static void test3(){ Properties p = new Properties(); p.setProperty("姓名", "LingDu"); p.setProperty("性別", "男"); p.setProperty("年齡", "18"); try { p.storeToXML(new FileOutputStream("a.xml"), "this is frist xml file"); } catch (IOException e) { e.printStackTrace(); } }

3


讀取XML文件

/** * 從XML文件中讀取數據 */ public static void test4(){ Properties p = new Properties(); try { p.loadFromXML(new FileInputStream("a.xml")); //將讀取的姓名輸出 System.out.println(p.getProperty("姓名")); } catch (IOException e) { e.printStackTrace(); } }

4


提高代碼的可復用性

通常我們要提高代碼的可復用性,一般會對方法進行封裝 這樣可以更方便的獲取到對應的屬性值 我這里分別創建一個jdbc.properties文件,和sql.xml文件


jdbc.properties文件用來存放連接數據庫的一些相關屬性

5


sql.xml文件存放一些查詢數據庫有關的語句

6


可復用的PropertiesUtil工具類

import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.util.Properties;/** * 讀取屬性文件相關的類 * 將方法進行封裝 * @author LingDu */public class PropertiesUtil { /** * 功能:從配置文件中讀取出一個key對應的value * @param propertyName 配置文件中的key * @return 返回一個value */ public static String getValue(String propertyName){ String value = ""; Properties p = new Properties(); try { p.load(new InputStreamReader(new FileInputStream("src/jdbc.properties"),"UTF-8")); } catch (IOException e) { e.printStackTrace(); } //使用帶默認值的方法,如果沒找到對應的key,則賦值一個空字符串 value = p.getProperty(propertyName,""); return value; } /** * 功能:從XML文件中讀取對應的value值 * @param propertyName 配置文件中的key * @return 返回一個value */ public static String getValueFromXml(String propertyName){ String value = ""; Properties p = new Properties(); try { p.loadFromXML(new FileInputStream("src/sql.xml")); } catch (IOException e) { e.printStackTrace(); } value = p.getProperty(propertyName,""); return value; } public static void main(String[] args){ //輸出key為"driverName" 的value值 System.out.println(PropertiesUtil.getValue("driverName")); //輸出key為"user.list" 的value值 , 后面的方法作用是 替換掉/r/n System.out.println(PropertiesUtil.getValueFromXml("user.list").replace("/r", "").replace("/n", "")); }}

7

可復用的sql工具類

import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;/** * 2017-2-18 * 從配置文件中動態加載SQL語句 * @author LingDu */public class JdbcDemo { /** * 獲取一個數據庫的連接 * 通過去PropertiesUtil工具類去讀取src下的jdbc.properties文件 * @return 返回一個連接 */ public static Connection getConnection(){ String driverName = PropertiesUtil.getValue("driverName"); String url = PropertiesUtil.getValue("url"); String username = PropertiesUtil.getValue("username"); String passWord = PropertiesUtil.getValue("password"); Connection conn = null; try { Class.forName(driverName); conn = DriverManager.getConnection(url,username,password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } /** * 功能:從數據庫獲取一個用戶數據的集合 * @return 對象集合 */ public static List<User> getUserList(){ List<User> userList = new ArrayList<User>(); Connection conn = getConnection(); String sql = PropertiesUtil.getValueFromXml("user.list"); System.out.println("讀取到xml中的sql語句:" + sql + "/n"); Statement stmt = null; ResultSet rs = null; try { stmt = conn.createStatement(); rs = stmt.executeQuery(sql); while(rs.next()){ int id = rs.getInt("id"); String name = rs.getString("username"); User user = new User(id,name); userList.add(user); } } catch (SQLException e) { e.printStackTrace(); }finally{ try { rs.close(); stmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } return userList; } /** * 帶條件的SQL查詢 * 功能:從數據庫獲取一個指定名字的數據集合 * @return 對象集合 */ public static List<User> getUserListByName(String name){ List<User> userList = new ArrayList<User>(); Connection conn = getConnection(); String sql = PropertiesUtil.getValueFromXml("user.list.byName"); System.out.println("讀取到xml中的sql語句:" + sql + "/n"); //創建一個預編譯的PreparedStatement對象 PreparedStatement ps = null; ResultSet rs = null; try { //prepareStatement(String sql) 創建一個 PreparedStatement 對象來將參數化的 SQL 語句發送到數據庫。 ps = conn.prepareStatement(sql); //select * from tb_user where username=? 設置到第一個參數 '?' ps.setString(1, name); //執行查詢語句 rs = ps.executeQuery(); while(rs.next()){ User user = new User(rs.getInt("id"),rs.getString("username")); userList.add(user); } } catch (SQLException e) { e.printStackTrace(); }finally{ try { rs.close(); ps.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } return userList; } public static void main(String[] args){ Connection conn = getConnection(); if(conn != null){ System.out.println("數據庫已連接"); } System.out.println("-----------------------------/n"); //獲取到所有的用戶數據 List<User> userList = getUserList(); for (User user : userList) { System.out.println("id=" + user.getId() + ",username=" + user.getUserName()); } System.out.println("-----------------------------/n"); //傳入用戶名獲取指定用戶名的數據 List<User> userListByName = getUserListByName("lingdu"); for (User user : userListByName) { System.out.println("id=" + user.getId() + ",username=" + user.getUserName()); } }}/** * JavaBean * 存放User表中相關字段 * @author LingDu */class User{ private int id; private String userName; public User(int id, String userName) { super(); this.id = id; this.userName = userName; } public User(){} public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; }}

8


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江门市| 淮滨县| 那曲县| 辽源市| 酉阳| 道真| 建瓯市| 新乡市| 丰城市| 淅川县| 玉田县| 庆安县| 抚远县| 句容市| 万载县| 开原市| 甘孜| 临沭县| 佳木斯市| 呼和浩特市| 铜梁县| 浠水县| 桓仁| 蒲城县| 芜湖县| 绵竹市| 德安县| 清流县| 平塘县| 大兴区| 隆尧县| 新营市| 宕昌县| 泸水县| 武隆县| 宽城| 吉木萨尔县| 龙岩市| 潮安县| 区。| 龙泉市|