android操作ini工具类

package com.smarteye.common;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.regex.Pattern;

/**
 * ini文件工具类
 * 
 * @author xuwanshu
 * 
 */
public class IniFileTools {

    /**
     * 点节
     * 
     * @author liucf
     * 
     */
    public class Section {

        private String name;

        private Map<String, Object> values = new LinkedHashMap<String, Object>();

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public void set(String key, Object value) {
            values.put(key, value);
        }

        public Object get(String key) {
            return values.get(key);
        }

        public Map<String, Object> getValues() {
            return values;
        }

    }

    /**
     * 换行符
     */
    private String line_separator = "\n";

    /**
     * 编码
     */
    private String charSet = "UTF-8";

    private Map<String, Section> sections = new LinkedHashMap<String, Section>();

    /**
     * 指定换行符
     * 
     * @param line_separator
     */
    public void setLineSeparator(String line_separator) {
        this.line_separator = line_separator;
    }

    /**
     * 指定编码
     * 
     * @param charSet
     */
    public void setCharSet(String charSet) {
        this.charSet = charSet;
    }

    /**
     * 设置值
     * 
     * @param section
     *            节点
     * @param key
     *            属性名
     * @param value
     *            属性值
     */
    public void set(String section, String key, Object value) {
        Section sectionObject = sections.get(section);
        if (sectionObject == null)
            sectionObject = new Section();
        sectionObject.name = section;
        sectionObject.set(key, value);
        sections.put(section, sectionObject);
    }

    /**
     * 获取节点
     * 
     * @param section
     *            节点名称
     * @return
     */
    public Section get(String section) {
        return sections.get(section);
    }

    /**
     * 获取值
     * 
     * @param section
     *            节点名称
     * @param key
     *            属性名称
     * @return
     */
    public Object get(String section, String key) {
        return get(section, key, null);
    }

    /**
     * 获取值
     * 
     * @param section
     *            节点名称
     * @param key
     *            属性名称
     * @param defaultValue
     *            如果为空返回默认值
     * @return
     */
    public Object get(String section, String key, String defaultValue) {
        Section sectionObject = sections.get(section);
        if (sectionObject != null) {
            Object value = sectionObject.get(key);
            if (value == null || value.toString().trim().equals(""))
                return defaultValue;
            return value;
        }
        return null;
    }

    /**
     * 删除节点
     * 
     * @param section
     *            节点名称
     */
    public void remove(String section) {
        sections.remove(section);
    }

    /**
     * 删除属性
     * 
     * @param section
     *            节点名称
     * @param key
     *            属性名称
     */
    public void remove(String section, String key) {
        Section sectionObject = sections.get(section);
        if (sectionObject != null)
            sectionObject.getValues().remove(key);
    }

    /**
     * 当前操作的文件对像
     */
    private File file = null;

    public IniFileTools() {

    }

    public IniFileTools(File file) {
        this.file = file;
        initFromFile(file);
    }

    public IniFileTools(InputStream inputStream) {
        initFromInputStream(inputStream);
    }

    /**
     * 加载一个ini文件
     * 
     * @param file
     */
    public void load(File file) {
        this.file = file;
        initFromFile(file);
    }

    /**
     * 加载一个输入流
     * 
     * @param inputStream
     */
    public void load(InputStream inputStream) {
        initFromInputStream(inputStream);
    }

    /**
     * 写到输出流中
     * 
     * @param outputStream
     */
    public void save(OutputStream outputStream) {
        BufferedWriter bufferedWriter;
        try {
            bufferedWriter = new BufferedWriter(new OutputStreamWriter(
                    outputStream, charSet));
            saveConfig(bufferedWriter);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

    /**
     * 保存到文件
     * 
     * @param file
     */
    public void save(File file) {
        try {
            BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(
                    file));
            saveConfig(bufferedWriter);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 保存到当前文件
     */
    public void save() {
        save(this.file);
    }

    /**
     * 从输入流初始化IniFile
     * 
     * @param inputStream
     */
    private void initFromInputStream(InputStream inputStream) {
        BufferedReader bufferedReader;
        try {
            bufferedReader = new BufferedReader(new InputStreamReader(
                    inputStream, charSet));
            toIniFile(bufferedReader);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

    /**
     * 从文件初始化IniFile
     * 
     * @param file
     */
    private void initFromFile(File file) {
        BufferedReader bufferedReader;
        try {
            bufferedReader = new BufferedReader(new FileReader(file));
            toIniFile(bufferedReader);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 从BufferedReader 初始化IniFile
     * 
     * @param bufferedReader
     */
    private void toIniFile(BufferedReader bufferedReader) {
        String strLine;
        Section section = null;
        Pattern p = Pattern.compile("^\\[.*\\]$");
        try {
            while ((strLine = bufferedReader.readLine()) != null) {
                if (p.matcher((strLine)).matches()) {
                    strLine = strLine.trim();
                    section = new Section();
                    section.name = strLine.substring(1, strLine.length() - 1);
                    sections.put(section.name, section);
                } else {
                    String[] keyValue = strLine.split("=");
                    if (keyValue.length == 2) {
                        section.set(keyValue[0], keyValue[1]);
                    }
                }
            }
            bufferedReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 保存Ini文件
     * 
     * @param bufferedWriter
     */
    private void saveConfig(BufferedWriter bufferedWriter) {
        try {
            boolean line_spe = false;
            if (line_separator == null || line_separator.trim().equals(""))
                line_spe = true;
            for (Section section : sections.values()) {
                bufferedWriter.write("[" + section.getName() + "]");
                if (line_spe)
                    bufferedWriter.write(line_separator);
                else
                    bufferedWriter.newLine();
                for (Map.Entry<String, Object> entry : section.getValues()
                        .entrySet()) {
                    bufferedWriter.write(entry.getKey());
                    bufferedWriter.write("=");
                    bufferedWriter.write(entry.getValue().toString());
                    if (line_spe)
                        bufferedWriter.write(line_separator);
                    else
                        bufferedWriter.newLine();
                }
            }
            bufferedWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

ini操作类

package com.smarteye.common;

import java.io.File;

import com.smarteye.adapter.BVPU_ServerParam;

public class AddressManage {
	public static final String ADDRESS_DIR = MPUPath.MPU_PATH_ROOT
			+ "/address.ini";

	/**
	 * 验证是否存在该文件
	 * 
	 * @return
	 * @throws Exception
	 */
	public static boolean isExist() throws Exception {
		try {
			File f = new File(ADDRESS_DIR);
			if (!f.exists()) {
				return false;
			}
		} catch (Exception e) {
			// TODO: handle exception
			return false;
		}
		return true;
	}

	public static void createIni(BVPU_ServerParam param) {
		IniFileTools file2 = new IniFileTools();
		file2.set("address", "ip", param.szServerAddr);
		file2.set("address", "port", param.iServerPort);
		file2.save(new File(ADDRESS_DIR));
	}

	public static void readIni(BVPU_ServerParam param) {
		IniFileTools file2 = new IniFileTools(new File(ADDRESS_DIR));
		param.szServerAddr = file2.get("address", "ip").toString();
		param.iServerPort = Integer.parseInt(String.valueOf(file2.get(
				"address", "port")));
	}
}

  

posted @ 2015-04-13 11:54  大树0313  阅读(1326)  评论(0编辑  收藏  举报