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")));
	}
}

  

时间: 2024-10-17 04:38:31

android操作ini工具类的相关文章

Android常用的工具类

主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.PreferencesUtils.JSONUtils.FileUtils.ResourceUtils.StringUtils.ParcelUtils.RandomUtils.ArrayUtils.ImageUtils.ListUtils.MapUtils.ObjectUtils.SerializeUtils.S

c语言中字符串操作的工具类

 1.编写头文件 #define _CRT_SECURE_NO_WARNINGS //#pragmawarning(disable:4996) #include <stdio.h> #include <stdlib.h> #include <string.h> struct CString { char *p;        //保存字符串首地址 int reallength; //实际长度 }; typedef struct CString mystring;//

poi操作Excel工具类

在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完成的功能是:读取Excel.写入Excel.合并Excel的功能.

一个使用命令行编译Android项目的工具类

一个使用命令行编译Android项目的工具类 简介 编译apk项目需要使用的几个工具,基本都在sdk中,它们分别是(Windows系统): 1.aapt.exe 资源打包工具 2.android.jar Android编译工具 3.dx.bat dex文件生成工具 4.sdklib.jar 生成apk 5.jarsigner 签名工具 准备 在打包前,需要的环境如下: 1.JDK1.6+ 2.Android SDK 3.上述5个工具的路径 打包过程 1.生成R.java文件 比如: aapt p

List操作的工具类

1 /** 2 * <p>list操作的工具类</p> 3 */ 4 public class ListUtil { 5 /** 6 * 过滤掉list里面才重复项 7 * 8 * @param list 9 * @return List 10 */ 11 public static List<String> filterRepeat(List<String> list){ 12 int length = list.size(); 13 for(int i

Java 借助poi操作Wold工具类

? Apache封装的POI组件对Excel,Wold的操作已经非常的丰富了,在项目上也会经常用到一些POI的基本操作 这里就简单的阐述POI操作Wold的基本工具类,代码还是有点粗造的,但是不影响使用. 这个类包含了一些对文本进行换行,加粗,倾斜,字体颜色,大小,首行缩进,添加边框等方法.分享给大家学习下: Apache POI的组件: ApachePOI包含用于处理MS-Office的所有OLE2复合文档的类和方法.该API的组件列表如下 - POIFS(不良混淆实现文件系统) - 此组件是

Android开发常用工具类

来源于http://www.open-open.com/lib/view/open1416535785398.html 主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前包括  HttpUtils.DownloadManagerPro.Safe.ijiami.ShellUtils.PackageUtils. PreferencesUtils.JSONUtils.FileUtils.ResourceUtils.StringUtils. ParcelUtils.Rand

20个Android开发常用工具类

主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前包括  HttpUtils.DownloadManagerPro.Safe.ijiami.ShellUtils.PackageUtils.PreferencesUtils.JSONUtils.FileUtils.ResourceUtils.StringUtils.ParcelUtils.RandomUtils.ArrayUtils.ImageUtils.ListUtils.MapUtils.ObjectUtils.S

最全Android开发常用工具类

主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前包括  HttpUtils.DownloadManagerPro.Safe.ijiami.ShellUtils.PackageUtils.PreferencesUtils.JSONUtils.FileUtils.ResourceUtils.StringUtils.ParcelUtils.RandomUtils.ArrayUtils.ImageUtils.ListUtils.MapUtils.ObjectUtils.S