0
点赞
收藏
分享

微信扫一扫

读取.properties中的IPlist技巧

凌得涂 2022-08-05 阅读 64


public class IpConfig {
private static final Logger logger = LoggerFactory.getLogger(IpConfig.class);

private static boolean isReady = false;

private static IpConfig instanced = new IpConfig();
public static IpConfig getInstanced() {
return instanced;
}

private List<String> ip;
long startTime;
long lastModifiedTime;

private IpConfig() {

if (!isReady){
isReady = true;
String path = this.getClass().getResource(PropertiesUtil.getValue("ip.white.list.path")).getFile();
initConfiguration(path);
startTime = System.currentTimeMillis();
}
}

public void initConfiguration(String path) {
File file = new File(path);

if (!file.exists()) {
logger.debug("file is null");
return;
}

lastModifiedTime = file.lastModified();

BufferedReader bf = null;
FileReader fileReader = null;
List<String> ipList = new ArrayList<String>();
try {
fileReader = new FileReader(file);
bf = new BufferedReader(fileReader);

String line = null;
while ((line = bf.readLine()) != null) {
ipList.add(line.trim().replace(" ", ""));
}

if (ipList.size() > 0) {
ip = ipList;
}

} 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(bf, fileReader);
} catch (IOException e) {
logger.error("action:config;error message:" + e.getMessage());
}
}

}

protected void closeReadFile(BufferedReader bufferedReader, FileReader fileReader) throws IOException{
if (bufferedReader!=null){
bufferedReader.close();
}
if (fileReader!=null){
fileReader.close();
}
}

public List<String> getIpList() {
long endTime = System.currentTimeMillis();
long readTime = endTime - startTime;

if (readTime > Long.parseLong(PropertiesUtil.getValue("ip.timeout.time")) * 1000){
String path = this.getClass().getResource(PropertiesUtil.getValue("ip.white.list.path")).getFile();
File file = new File(path);
long lastRead = file.lastModified();
//If file had been modified, need to init again
if (lastModifiedTime != lastRead) {
initConfiguration(path);
}
startTime = endTime;

}
if (ip != null && ip.size() > 0) {
return ip;
}
return null;
}

}

 

举报

相关推荐

0 条评论