• properties


    View Code
    import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import java.io.UnsupportedEncodingException;
    import java.util.ArrayList;
    import java.util.Properties;
    
    public class MyProperties extends ArrayList {
        private String fileName;
        private String code = "GBK";
     public static void main(String[] args) throws IOException{
         String pathString="D:/proper.properties";
         MyProperties proper=new MyProperties(pathString,"GBK");
         proper.setTitle("测试用Properties设置键值对的值");
         proper.setProperties("studentName", "珍妮");
         proper.setNotes("studentName","学生姓名");
         proper.setProperties("room", "三年级一班");
         proper.setNotes("room", "所在年级");
         proper.setProperties("score", "98.5");
         proper.setNotes("score", "数学分数");
         proper.saveFile();
         System.out.println(readFile(pathString,"GBK"));
         proper.getValue();
         
         
     }
        public MyProperties(String fileName, String Code)
                throws UnsupportedEncodingException {
            this.setFileName(fileName);
            this.setCharacterEncoding(Code);
    
        }
    
        private void setFileName(String fileName) {
            this.fileName = fileName;
        }
    
        private void setCharacterEncoding(String code)
                throws UnsupportedEncodingException {
            new String("".getBytes("iso8859_1"), code);
            this.code = code;
        }
    
        public static boolean isExist(String fileName) {
            return new File(fileName).isFile();
        }
    
        public static String readFile(String fileName, String code)
                throws IOException {
            StringBuffer sb = new StringBuffer();// 创建字符缓冲流
            BufferedReader in = new BufferedReader(new FileReader(fileName));// 创建缓冲读对象
            String s;
            while ((s = in.readLine()) != null) {// 循环读取文件信息
                sb.append(s);// 拼接字符串
                sb.append("\n");
            }
            in.close();
            return sb.toString();
        }
    
        public void writeFile(String proper) throws IOException {// 字符串写入文件
            PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(
                    fileName)));// 创建文本输入流打印对象
            out.print(proper);// 将字符串写入文件
            out.close();// 释放资源
        }
    
        public void saveFile() throws IOException {
            PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(
                    fileName)));
            String tmpString;
            for (int i = 0; i < size(); i++) {
                tmpString = get(i) + "";
                out.println(tmpString);
            }
            out.close();
        }
    
        public void setProperties(String key, String val)
                throws UnsupportedEncodingException {// 设置Properties键值
            int pro = LookForKey(key);
            if (pro >= 0) {
                this.set(pro, key + "=" + val);
            } else {
                this.add(key + "=" + val);
            }
    
        }
    
        public int LookForKey(String key) throws UnsupportedEncodingException {// 查找键的序号
            String tempString;
            for (int i = 0; i < size(); i++) {// 循环显示集合的信息
                tempString = get(i) + "";
                tempString = new String(tempString.getBytes("iso8859_1"), code);// 编码转换
                if (tempString.indexOf(key) == 0) {// 没有找到键值对
                    return i;
                }
    
            }
            return -1;
        }
    
        public void setNotes(String key, String memo)
                throws UnsupportedEncodingException {// 设置备注
            if ("".equals(key)) {
                this.add("#" + memo);
                return;
            }
            String tempString;
            int result = LookForKey(key);
            if (result == -1) {
                this.add("#" + memo);
                this.add(key + "=");
            } else {
                int postion = result - 1;
                if (postion < 0) {
                    this.add(postion, "#" + memo);
                } else {
                    tempString = this.get(postion) + "";
                    if ("#".equals(tempString.substring(0, 1)))// 判断截取的值
                        this.set(postion, "#" + memo);
                    else {
                        this.add(postion + 1, "#" + memo);
                    }
                }
            }
        }
    
        public void setTitle(String title) {// 设置注释内容
            String tmp= this.get(0) + " ";
            if (tmp == null || tmp.length() == 0)
                tmp = "";
            else {
                tmp = tmp.substring(0, 1);
            }
            if ("#".equals(tmp))
                this.set(0, "#" + title);
            else {
                this.add(0, "");
                this.add(0, "#" + title);
            }
        }
    
        public String getProperties(String key) throws UnsupportedEncodingException {
            return getProperties(key, "");
        }
    
        public String getProperties(String key, String defaultStr)
                throws UnsupportedEncodingException {
            String temp, resultString;
            for (int i = 0; i < size(); i++) {
                temp = get(i) + "";
                temp = new String(temp.getBytes("iso8859_1"), code);
                if (temp.indexOf(key) == 0) {
                    resultString = temp.substring(key.length() + 1);
                    return resultString;
                }
    
            }
            return defaultStr;
        }
    
        public void getValue() throws IOException {
            InputStream in = new BufferedInputStream(new FileInputStream(
                    "/proper.properties"));
            Properties p = new Properties();
            p.load(in);
            String s = (String) p.get("studentName");
            String name = new String(s.getBytes("iso8859_1"), "GBK");
            System.out.println("输出studentName的值:" + name);
            String aString = (String) p.get("room");
            String room = new String(aString.getBytes("iso8859_1"), "GBK");
            System.out.println("输出room的值:" + room);
        }
    }

     setTitle()总是报错,求解这个错误原因在哪里?错误如下:

    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
     at java.util.ArrayList.RangeCheck(ArrayList.java:547)
     at java.util.ArrayList.get(ArrayList.java:322)
     at MyProperties.setTitle(MyProperties.java:137)
     at MyProperties.main(MyProperties.java:21)

  • 相关阅读:
    IOS开发——01_第一个OC程序
    01_iOS开发需要准备什么?
    正则表达式随笔
    .net4.6版本前设置window子窗口位置主窗口闪烁
    [CF1486D] Max Median
    [CF1487D] Pythagorean Triples
    [CF1487E] Cheap Dinner
    [CF1490E] Accidental Victory
    [CF1490F] Equalize the Array
    [CF1490G] Old Floppy Drive
  • 原文地址:https://www.cnblogs.com/ilxx1988/p/Properties.html
Copyright © 2020-2023  润新知