0
点赞
收藏
分享

微信扫一扫

如何读取.conf文件以及实时更新文件内容

鱼满舱 2022-08-04 阅读 39


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

举报

相关推荐

0 条评论