zoukankan      html  css  js  c++  java
  • java===IO=properties

    package Properties;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.time.format.TextStyle;
    import java.util.Properties;
    import java.util.Set;
    
    /**
     * Map
     *     --|Hashtable
     *            --|Properties
     * Properties集合特点:
     * 1、该集合中的键和值都是字符串类型。
     * 2、集合中的数据可以保存到流中,或者从流中获取数据。
     * 
     * 通常该集合用于操作以键值对形式存在的配置文件。
     * */
    public class PropertiesDemo_1 {
    
        public static void main(String[] args) throws IOException {
    
            //methodDemo_4();
            myLoad();
            test();
        }
        public static void test() throws IOException {
            //讀取文件
            File file = new File("info.txt");
            if(!file.exists()){
                file.createNewFile();
            }
            FileReader fr = new FileReader(file);
            //創建集合存儲配置信息
            Properties prop = new Properties();
            //將流中信息存儲到集合中。
            prop.load(fr);
            prop.setProperty("zhangsan", "16");
            FileWriter fw1 = new FileWriter(file);
            prop.store(fw1, "");
            fr.close();
            fw1.close();
        }
        /**
         * load方法原理:
         * */
        public static void myLoad() throws IOException {
            
            Properties prop = new Properties();
            BufferedReader bufr = new BufferedReader(new FileReader("info.txt") );
            String line = null;
            while((line = bufr.readLine())!=null){
                if(line.startsWith("#")){
                    continue;
                }
                String[]arr = line.split("=");
                System.out.println(arr[0]+"::"+arr[1]);
            }
            bufr.close();
        }
        public static void methodDemo_4() throws IOException {
            Properties prop = new Properties();
            FileInputStream fis = new FileInputStream("info.txt");
            prop.load(fis);
            fis.close();
        }
        public static void methodDemo_3() throws IOException {
            //创建一个Properties集合
                    Properties prop = new Properties();
            //存储元素。
                    prop.setProperty("zhangsan", "34");
                    prop.setProperty("lisi", "33");
                    prop.setProperty("tom", "32");
            //想要將這些集合中的字符串鍵值對信息持久化存儲到文件中,就要關聯輸出流;
                    FileOutputStream fos = new FileOutputStream("info.txt");
                    prop.store(fos,"name and age");
                    fos.close();
        }
        /**
         * 演示Properties集合和流对象相结合的功能
         * */
        public static void methodDemo_2(){
            Properties prop = new Properties();
    //        prop.setProperty("zhangsan", "34");
    //        prop.setProperty("lisi", "33");
    //        prop.setProperty("tom", "32");
            prop=System.getProperties();
            prop.list(System.out);
        }
    /**
     * Properties集合的存和取。
     * */
        public static void propertiesDemo(){
            //创建一个Properties集合
            Properties prop = new Properties();
            //存储元素。
            prop.setProperty("zhangsan", "34");
            prop.setProperty("lisi", "33");
            prop.setProperty("tom", "32");
            //修改元素
            prop.setProperty("tom", "22");
            //取出所有元素
            Set<String>names = prop.stringPropertyNames();
            for(String name:names){
                String value = prop.getProperty(name);
                System.out.println(name+"::"+value);
            }
        }
    }
    package Properties;
    /**
     * 配置文件應用:Properties 與IO技術相關,方便操作硬盤等設備;應用與配置文件,而軟件的配置文件可以用來配置軟件的個性化設置,以及需要長久保存的內容,都可以考慮保存到配置文件中;
     * */
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Properties;
    
    /**
     * 需求:定義一個功能,記錄程序運行次數;當程序運行5次,停止使用給出提示請付費購買正版;
     * 思路:
     * 1、應該有計數器
     * 2、程序啟動時進行計數,計數器就必須存在內存中並進行運算,運算完畢計數變量消失,再重新啟動程序變量重新加載,達不到計數效果;
     * 而我們需要多次啟動同一個應用程序,這就需要計數器的生命週期邊長,從內存存儲到硬盤文件中
     * 3、程序啟動時先讀取用於讀取記錄計數器的配置文件,獲取上一次計數次數判斷次數,并進行自增,自增后重新存儲到配置文件中;
     * 4、文件中信息如何進行存儲并進行體現呢?直接存儲此數值可以,但是不明確搞數據的含義,所以起名字就變得很重要;
     * 這就有了鍵值對關係,並且還要關聯IO,所以可以使用map集合中的Properties集合;如果更複雜可以使用xml配置文件;
     * */
    public class PropertiesTest {
    
        public static void main(String[] args) throws IOException {
    
            getAppCount();
        }
    
        public static void getAppCount() throws IOException {
            //將配置文件封裝成對象
            File confile = new File("count.properties");
            if(!confile.exists()){
                confile.createNewFile();
            }
            FileInputStream fis1 = new FileInputStream(confile);
            Properties prop = new Properties();
            prop.load(fis1);
            //從集合中通過鍵獲取次數
            String value = prop.getProperty("time");
            //定義計數器
            int count=0;
            if(value!=null){
                count= Integer.parseInt(value);
                if(count>=5){
                    throw new RuntimeException("試用次數已到,請付費購買!");
                }
            }
            count++;
            //改變后的次數重新記錄到集合中
            prop.setProperty("time", count+"");
            FileOutputStream fos1 = new FileOutputStream(confile);
            prop.store(fos1, "");
            fos1.close();
            fis1.close();
            
        }
    
    }
  • 相关阅读:
    HTML5 闹钟例子程序
    程序员书籍,你值得收藏
    mybatis入门案例测试常见问题以及解决方法
    jquery对Select标签的操作
    Linux下mysql整库备份
    Windows 命令提示符下查看 apache 错误的方法
    将 DataTable 转化为 Excel Xml 格式供下载
    Infragistics netadvantage UltraGrid (UltraWinGrid) 编程手记
    报表设计技巧交叉报表模板
    Gentle.NET Users' Guide
  • 原文地址:https://www.cnblogs.com/wangyinxu/p/6859312.html
Copyright © 2011-2022 走看看