读取配置文件获取所需信息

来源:互联网 发布:视频编辑软件 知乎 编辑:程序博客网 时间:2024/04/29 01:47
连续加班,总结一下近几天来的工作任务。在比较小的项目或者访问量较小时,数据库任务不妨改为读取配置文件较为方便些。初次接触读配置文件进行业务处理,简单的说下步骤及代码。首先第一步就是先读取配置文件。如果存放本地的话,还需在测试一下吧,我记得应该是可以的。
public static Properties readProxyUsers() throws Exception {        Properties pro = new Properties();        InputStream iner = null;        try {             File fileDiroctory = new File("/dtp/app/tomcat/proxyusers"); // 服务器地址            if (!fileDiroctory.exists()) {                fileDiroctory.mkdirs();            }            File proxyUserFile = new File(fileDiroctory, "proxyusers.properties");            if (!proxyUserFile.exists()) {                proxyUserFile.createNewFile();            }            iner = FileUtils.openInputStream(proxyUserFile);            pro.load(iner);        }  finally{            if (iner != null) {                iner.close();            }        }        return pro;    }
读取到文件以后,要看文件的类型,然后进行字段分割及遍历取到用户信息。先分析一下我的配置文件,然后再读分割信息就很一目了然了。
#Fri Nov 03 14:09:09 CST 2017150875473959710.id=150875473959710150958612871810.clientIp=192.168.28.111150875473959710.functions=FTP/HTTP150958612871810.key=/dtp/app/tomcat/proxyusers/Top123.topkey150958612871810.id=150958612871810150958612871810.onlineTime=0150875473959710.clientIp=192.168.28.111150875473959710.key=/dtp/app/tomcat/proxyusers/Topwalk313.topkey150875473959710.isOnline=\u662F150875473959710.isUpline=\u662F150958612871810.beginTime=127888150958612871810.password=Topwlak123150958612871810.name=Top123150875473959710.password=1150875473959710.beginTime=1509689349795150958612871810.functions=150875473959710.name=Topwalk313150958612871810.isOnline=\u5426150875473959710.onlineTime=51323686416920
 前面一串数字是用户的id
private static String switchStr(String id,Integer type){        StringBuffer key = new StringBuffer();        key.append(id).append(".");        switch (type) {        case 0:            key.append("id");            break;        case 1:            key.append("name");            break;        case 2:            key.append("password");            break;        case 3:            key.append("key");            break;        case 4:            key.append("functions");            break;        case 5:            key.append("isOnline");            break;        case 6:            key.append("beginTime");            break;        case 7:            key.append("onlineTime");            break;        case 8:            key.append("clientIp");            break;        default:            key.append("def");            break;        }        return key.toString();    }
分割完毕,然后是查询用户列表信息,可到前台展示
/**     * 查询业务用户列表     */    private static List<ProxyUser> getUsers() throws Exception {        Properties pro = readProxyUsers();        List<String> ids = new ArrayList<String>();        List<ProxyUser> list = new ArrayList<ProxyUser>();        if (pro != null) {            for (Object str : pro.keySet()) {                String id = str.toString().split("\\.")[0];                if (ids.contains(id)) {                    continue;                } else {                    ids.add(id);                }            }            for (String id : ids) {                ProxyUser pu = new ProxyUser();                pu.setId(id);                 pu.setName(pro.getProperty(switchStr(id, 1)));                pu.setPassword(pro.getProperty(switchStr(id, 2)));                pu.setKey(pro.getProperty(switchStr(id, 3)));                pu.setFunctions(pro.getProperty(switchStr(id, 4)));                pu.setOnline(pro.getProperty(switchStr(id, 5)));                pu.setBeginTime((pro.getProperty(switchStr(id, 6))));                pu.setOnlineTime(getOnlineTime(pro.getProperty(switchStr(id, 7))));                pu.setClientIp(pro.getProperty(switchStr(id, 8)));                list.add(pu);            }        }        return list;    }

这样查询就可以了,说一个业务来说明对配置文件进行修改或新增吧。
想要判断客户端的状态,每次都要给值加一,服务端写一个定时器,每隔3秒读取,当比较字符串没有发生改变时,就判断客户端已下线。
下面是设置每次加1的代码。

public void setLongTiem(String name) throws Exception {        List<ProxyUser> list = getUsers();        OutputStream out = null;        // 读取pro        Properties pro = readProxyUsers();        for (ProxyUser pu : list) {            if (name.equals(pu.getName())) {                Long l = Long.valueOf(pu.getLongtime());                pro.setProperty(switchStr(pu.getId(), 9), (l + 1) + "");                out = new FileOutputStream("/dtp/app/tomcat/proxyusers/proxyusers.properties");                pro.store(out, null);                out.flush();            }        }    }

这是循环读取的,如果只单纯读取配置文件的一个字段,那就很简单了。

public static String getPasswdExpiryDate() {        String object = "";        InputStream stream = null;        try {            File file = new File("/dtp/conf/app/liveUserSize.properties"); // 本地测试路径            Properties pro = new Properties();            if (file.exists()) {                stream = new FileInputStream(file);                pro.load(stream);                object = pro.getProperty("passwdExpiryDate");                System.out.println(object);            }        } catch (Exception e) {            System.out.println("读取/dtp/conf/app/liveUserSize.properties文件异常!" + e);        } finally {            if (stream != null) {                try {                    stream.close();                } catch (Exception e2) {                    System.out.println("关闭流异常!" + e2);                }            }        }        return object;    }

第一个路径是配置文件的路径
第二个路径是要获取配置文件的字段。
就写这么多吧。下班了嘿嘿黑

原创粉丝点击