1.BaseFileConfig:
public abstract class BaseFileConfig { private FileReader fileReader; private BufferedReader bufferedReader ; public abstract void initConfiguration(String filePath); // public abstract String listConfiguration(); protected abstract void setFileLastModified(long time); public abstract long getFileLastModified(); protected BufferedReader readFile(String filePath) throws FileNotFoundException{ File file = new File(filePath); //set file last modified Time long time = file.lastModified(); setFileLastModified( time); //read file fileReader=new FileReader(file); bufferedReader = new BufferedReader(fileReader); return bufferedReader; } protected void closeReadFile() throws IOException{ if (bufferedReader!=null){ bufferedReader.close(); } if (fileReader!=null){ fileReader.close(); } } }
2.UserConfig.conf
public class UserConfig extends BaseFileConfig { private static Logger logger = LoggerFactory.getLogger(UserConfig.class); private static long lastModifiedTime = 0; private long startTime; private Map<String, UserInfo> users; private static boolean isReady = false; private static UserConfig instanced = new UserConfig(); private UserConfig() { if (!isReady){ isReady = true; String path = SystemConfig.getUser_conf_path(); initConfiguration(path); } } public static UserConfig getInstanced() { return instanced; } @Override public void initConfiguration(String filePath) { // first step, read file // second step, init configuration // third step, close red file if (filePath == null) { logger.info("file path is null"); return; } BufferedReader bf = null; Map<String, UserInfo> userMap = new HashMap<String, UserInfo>(); try { bf = readFile(filePath); if (bf == null) { logger.info("file is empty"); return; } String line = null; while ((line = bf.readLine()) != null) { String[] arr = line.split(","); if (arr.length == 2) { UserInfo userInfo = new UserInfo(); userInfo.setUsername(arr[0]); userInfo.setPassword(arr[1]); userMap.put(arr[0].trim(), userInfo); } } if (userMap.size() > 0) { users = userMap; } } catch (FileNotFoundException e) { logger.error("action:config;error message:" + e.getMessage()); } catch (IOException e) { logger.error("action:config;error message:" + e.getMessage()); } finally { try { closeReadFile(); } catch (IOException e) { logger.error("action:config;error message:" + e.getMessage()); } } @Override protected void setFileLastModified(long time) { // TODO Auto-generated method stub lastModifiedTime = time; } @Override public long getFileLastModified() { // TODO Auto-generated method stub return lastModifiedTime; } }
} public Map<String, UserInfo> getUsers() { long endTime = System.currentTimeMillis(); long readTime = endTime - startTime; if (readTime > Long.parseLong(SystemConfig.getProperty("user_conf.timeout.time")) * 1000){ String path = SystemConfig.getUser_conf_path(); File file = new File(path); long lastRead = file.lastModified(); if (lastModifiedTime != lastRead) { initConfiguration(path); } startTime = endTime; } if(users != null){ return users; } return null; } public UserInfo getUser(String userName){ if (userName==null){ return null; } if (users!=null){ return users.get(userName); } return null; }
这个conf文件的格式是:
xxx,yyyy
相关推荐
在Linux系统中,尤其是CentOS 6.7版本,配置网络连接时,有时会遇到一些问题,例如在`/etc/resolv.conf`文件中修改DNS地址后,重启系统或网络服务,这些更改不会生效。这个问题通常与网络服务的管理方式有关,特别是...
4. **文件读写操作**:`get-precalib.py`可能包含了读取校准结果并写入配置文件的功能。这需要用到Python的`open()`函数和文件操作方法,如`write()`。 5. **错误处理**:良好的脚本会包含异常处理代码,以应对可能...
下面是sysctl.conf文件中的重要参数解释: 1. dev.scsi.logging_level = 0 这个参数控制SCSI设备的日志级别。设置为0表示不记录任何日志信息。如果将其设置为1或更高,可以记录更多的日志信息。 2. dev.raid....
Java配置文件读取,采用单例模式加载config.properties
这是一个解决Java开发中读取配置文件每次都要重写的困惑。 特性 开箱即用,简单方便 支持JDK1.6+ 无需过多依赖,按需添加 状态 [已完成] 解析Properties配置文件 [待完成] 解析Xml配置文件 [待完成] 解析Ini配置...
`/etc/sysctl.conf`文件是用于持久化设置的关键文件之一。它使用与`rc.conf`类似的格式,即`variable=value`形式。当系统启动并进入多用户模式后,这些设置会生效。 #### 示例配置项解析 下面是一些示例配置项的...
5. 更新VDR配置:重启VDR服务,使其读取新的channels.conf文件,从而更新频道列表。 请注意,w_scan的使用可能需要对数字电视广播有一定了解,包括频率规划、调谐器设置等。如果你不熟悉这些概念,可能需要查阅相关...
在 [global] 段中,我们可以设置服务的绑定 IP 地址、缓冲请求延迟、日志文件、禁用日志文件、用户注册日志文件、日志文件格式、协议、usrfile 日志模式、CW 缓冲日志目录、客户端超时时间、读取器超时时间、客户端...
### Apache的httpd.conf文件常用指令解释 #### ServerType standalone `ServerType standalone` 这条指令用于指定Apache服务器的工作模式。此处设置为 `standalone` 表示Apache将以独立服务器模式运行,即不依赖于...
4. **用户权限**:在配置文件中,可以定义哪些用户或用户组可以访问哪些仓库,以及他们具有读取、写入还是完全控制的权限。例如,使用`authz`文件可以实现基于路径的访问控制,允许精细的权限管理。 5. **SSL/TLS...
"genie.libs.conf"提供了读取、写入和操作配置文件的API,支持常见的配置格式如JSON、YAML、INI等。通过这些API,开发者可以方便地获取、修改和保存配置信息,无需关心底层文件的具体细节,从而专注于业务逻辑的实现...
《lilo.conf——详解Linux引导装载程序的配置文件》 `lilo.conf`是Linux操作系统中引导装载程序LILO(LInux LOader)的主要配置文件,它位于系统的`/etc`目录下,用于控制LILO的行为和启动选项。本文将深入解析`...
5. 最后,打开一个Nginx配置文件(.conf),Notepad++应该会自动识别并应用高亮显示。 这个过程的关键在于理解Notepad++的用户定义语言机制。XML文件中的每一项规则对应了配置文件中的语法元素,比如: - `...
4. **动态更新**:`b3j0f.conf`支持配置的动态更新,使得在运行时可以修改并应用新的配置,而无需重启应用。 5. **易于使用**:库的API设计简洁,易于理解和使用,让开发者能够快速上手。 6. **可扩展性**:库的...
2. **Mullvad-*.conf文件**:这些文件是Tunsafe用于连接Mullvad(一家知名的虚拟私人网络服务提供商)的特定服务器配置。每个以"Mullvad"命名的文件代表一个不同的服务器位置,例如"mullvad-fi1.conf"表示芬兰的...
`jp.gr.java_conf.ussiy.app.propedit_5.3.3.jar` 是一个专门用于编辑和管理Properties文件的工具,这使得开发者可以更加便捷地处理这类文件。下面将详细介绍如何在Java中操作Properties文件,并结合`propedit`工具...
### Redis配置文件详解 #### 基本设置 1. **内存单位定义**:Redis配置文件支持使用常见的单位表示内存大小。例如: - `1k` 表示 `1000 bytes` - `1kb` 表示 `1024 bytes` - `1m` 表示 `1000000 bytes` - `1mb...
通常,这样的库会提供一种结构化的方式来处理应用配置,可能包括读取、写入配置文件,以及定义和验证配置选项等。 在Python生态系统中,使用`pip`工具可以方便地安装`.whl`文件。用户只需在命令行中输入`pip ...
4. **自动加载与重启**:`nginx-conf-watcher`会在检测到配置文件变化时,自动执行`nginx -s reload`命令,从而实现配置的实时加载。如果加载失败,通常是因为配置文件有语法错误,此时`nginx-conf-watcher`可能会...
例如:include=/opt/remi/php56/root/etc/php-fpm.d/*.conf,表示加载/opt/remi/php56/root/etc/php-fpm.d目录下所有.conf文件。 2. pid:指定master进程的pid文件路径,例如pid=/opt/remi/...