1. 程式人生 > >021.8 properties(開發使用頻率高)

021.8 properties(開發使用頻率高)

對象 oid 分享圖片 opened exception pfile pan count closed

內容:Properties基本存取、存儲到持久化設備、從持久化設備讀取、簡單模擬收費軟件試用結束
##
Properties——有配置文件的功能。
特點:
1、Hash table的子類,map集合中的方法都可以用
2、該集合沒有泛型。鍵值都是字符串
3、是一個持久化的屬性集,鍵值可以保存到集合和持久化設備上,鍵值的來源也可以是持久化設備。

##########################################################
基本存取

public class PropertiesDemo
{
    public static void main(String[] args)
    {
        methodDemo();
    } 
    
public static void methodDemo() { //Properties基本存取 Properties prop = new Properties(); prop.setProperty("xlsg", "21"); prop.setProperty("qldk", "20"); // prop.list(System.out); //這個方法調試使用 Set<String> set = prop.stringPropertyNames(); for(String name:set){ String value
= prop.getProperty(name); System.out.println(name+"__"+value); } } }

#######################################################################
存儲到持久化設備

通過Properties的store方法指定保存到什麽文件裏面

public class PropertiesDemo
{
    public static void main(String[] args) throws IOException
    {
        methodDemo();
    }
    
    
public static void methodDemo() throws IOException { //Properties基本存取 Properties prop = new Properties(); prop.setProperty("xlsg", "21"); prop.setProperty("qldk", "20"); // prop.list(System.out); //這個方法調試使用 Set<String> set = prop.stringPropertyNames(); for(String name:set){ String value = prop.getProperty(name); System.out.println(name+"__"+value); } //永久化存儲到設備上 FileOutputStream fos = new FileOutputStream("myfile\\we.properties"); //使用properties的store方法。 prop.store(fos, "my demo , person info"); } }

#########################################################################################
從持久化設備讀取

public static void main(String[] args) throws IOException
{
//        methodDemo();
    methodDemo_read();
}

private static void methodDemo_read() throws IOException
{
    File configure_file = new File("myfile\\we.properties");
    //讀取流中的數據
    Properties prop = new Properties();
    
    //定義讀取流和數據文件關聯
    FileInputStream fis = new FileInputStream(configure_file.toString());
    prop.load(fis);
    
    prop.list(System.out); //測試使用
    
    prop.setProperty("xlsg", "22");
    
    prop.list(System.out);
    
    FileOutputStream fos = new FileOutputStream(configure_file);
    
    prop.store(fos, "my demo,person info");
    
    fis.close();
    fos.close();
}

步驟:1)創建properties對象
2)創建輸入流對象
3)properties對象和輸入流對象相關聯
4)通過prop.setProperty("xlsg", "22");進行操作
5)保存prop.store(fos, "my demo , person info");

#########################################################################################
簡單模擬收費軟件試用結束

技術分享圖片
public static void main(String[] args) throws IOException
{
    String value = read_count();
    if(count(Integer.parseInt(value))){
        //操作
        value = Integer.toString(Integer.parseInt(value)+1);
        System.out.println(value);
    }
    else{
        System.out.println("試用結束,請充值!");
    }
    write_count(value);
}

private static boolean count(int num)
{
    if(num<5){
        return true;
    }
    return false;
}

private static void write_count(String value) throws IOException
{
    File configure_file = new File("myfile\\count.properties");
    FileOutputStream fos = new FileOutputStream(configure_file);
    Properties prop = new Properties();
    prop.setProperty("count", value);
    prop.store(fos, "tryout count");
    fos.close();
}

private static String read_count() throws IOException
{
    File configure_file = new File("myfile\\count.properties");
    if(!configure_file.exists()){
        configure_file.createNewFile();
    }
    FileInputStream fis = new FileInputStream(configure_file);
    
    Properties prop = new Properties();
    prop.load(fis);
    String value;
    String key = "count";
    if(prop.containsKey(key)){
    }
    else{
        prop.setProperty(key, "0");
    }
    value = prop.getProperty(key);
    return value;

}
my code 技術分享圖片
public static void main(String[] args) throws IOException {
    /*
     * 練習:定義功能記錄程序運行次數,滿足試用次數後,給出提示:試用次數已到,請註冊。
     * 
     * 思路:
     * 1,需要計數器。這個軟件使用一次計數一次。每使用一次,就進行計數累計。
     * 2,計數器是程序中的一個變量,程序啟動計數器計數,可是程序結束這個計數器就消失了。
     * 下次啟動會重新進行計數,原來計數的值沒有保留下來。咋辦?
     * 3,讓這個計數器持久化。存儲到文件中,為了標識數據可讀性,數據起個名字。出現鍵值對。
     * 而且還是一個持久化的鍵值對,Properties集合正好符合這個要求。
     * 
     */
    if(isStop()){
        System.out.println("試用次數已到,請註冊");
        return;
    }
    runcode();
}

private static boolean isStop() throws IOException {
    //1,配置文件。
    File configFile = new File("tempfile\\app.properties");
    if(!configFile.exists()){//如果配置文件不存在,就創建。
        configFile.createNewFile();
    }
    //2,創建屬性集。
    Properties prop = new Properties();
    //3,定義讀取流和配置文件關聯。
    FileInputStream fis = new FileInputStream(configFile);
    //4,將流關聯的數據讀取到屬性集中。
    prop.load(fis);
    //5,通過屬性集的指定鍵count,獲取具體的次數。
    String value = prop.getProperty("count");
    int count = 0;
    //6, 對value進行判斷,如果存在就對其自增。
    if(value!=null){
        count = Integer.parseInt(value);
        if(count>=5){
            return true;
        }
    }
    count++;//對其值進行自增。
    //7,將自增後的值和指定的鍵重新存儲到屬性集中,鍵相同,值覆蓋。
    prop.setProperty("count", Integer.toString(count));
    //8,將屬性集存儲到配置文件中。對配置文件中的信息進行更新。
    FileOutputStream fos = new FileOutputStream(configFile);
    prop.store(fos, "app run count");
    //9,關閉資源。
    fos.close();
    fis.close();
    return false;
}
//程序主體。
public static void runcode(){
    System.out.println("程序運行....play");
}
the answer

021.8 properties(開發使用頻率高)