现在的位置: 首页 > 综合 > 正文

.properties 文件读写

2013年11月30日 ⁄ 综合 ⁄ 共 2202字 ⁄ 字号 评论关闭

 properties 属性文件的读写在开发中也经常使用,主要以key-value 键值对的形式写入,我所知道
的有用于 国际化,就是将 中文-其它语言 对应 起来,当用户选择了相应的语言时,就读入相应的properties
文件,就可将整个项目换成另一种语言了。我在项目中也用到对属性文件的读写,用于玩家注册模块,因为玩家
注册时生成的地图坐标是随机的,如果在当玩家注册账号时从数据库查询比较慢,如果同一时间注册的人数比较
多,并发的访问量就大, 我是预先从数据库中生成几百条可供注册的坐标点到属性文件,玩家注册时,直接从
文件取数据,然后更新数据库,如果文件中数据量很少时,就重新再生成指定数量的坐标点就可以了,下面是
用到相关的读写代码,已经去除了项目中的数据操作

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;

/**
 * @author zjq june 2 2010 properties 文件读写
 *
 */
public class PropertiesUtil {

    public void createPropertiesFile(String fileName) {
        File file = new File(fileName);
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

    public void removeKeyFromFile(String filePath, Properties prop, int key) {
        Map saveMap = new HashMap();
        Iterator it = prop.keySet().iterator();
        System.out.println(prop.keySet().size());
        for (int i = 1; it.hasNext(); i++) {
            String k = (String) it.next();
            if (k.equals(key + "")) {
                i--;
                continue;
            }
            String v = prop.getProperty(k);
            saveMap.put(i + "", v);

        }
        prop.clear();
        prop.putAll(saveMap);
        try {

            OutputStream out = new FileOutputStream(filePath);
            prop.store(out, "Last Update," + new Date() + " Deletion: key:"
                    + "1");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    /**
     * 更新文件
     */
    public void updateFile(int key, String filePath) {
        Properties prop = new Properties();
        try {
            prop.load(new FileInputStream(filePath));

            String value = prop.getProperty(key + "");
            // **改变value值,重新写入***
            OutputStream fos = new FileOutputStream(filePath);
            prop.put(key + "", value);
            // 将此 Properties 表中的属性列表(键和元素对)写入输出流
            prop.store(fos, " Update '" + value + "' value");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

抱歉!评论已关闭.