`

读取.properties中的IPlist技巧

    博客分类:
  • Java
阅读更多
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;
	}

}

 

分享到:
评论

相关推荐

    详解关于SpringBoot的外部化配置使用记录

    # application.properties spring.server.name=spring-app spring.server.port=9237 ``` 在高级用法中,如果需要将配置信息映射到数组或者列表中,可以使用Java配置类中的字段类型来实现。例如: ```java @...

    视频捕获和传输(Delphi源码)

    视频捕获和传输(Delphi源码 ... Binding.IP := IPList.Strings[IPList.Count - 1]; Binding.Port := 8085; lblShowIP.Caption := Binding.IP; lblShowPort.Caption := IntToStr(Binding.Port);

    iplist:IP CIDRs List IP 地址列表

    · ·分类国家 IP 段采用 进行分类CountryCIDR中国 (CN)中国香港美国日本大陆 IP 段相比较国家 IP 段,数据经过精简合并CountryCIDR中国 (CN)省级 IP 段采用 进行分类,如广东省为 440000CityCIDR北京市...

    Windows XP中获取未使用IP地址方法.docx

    这段代码首先关闭命令提示符的回显(`@Echo off`),然后将当前日期和时间写入名为`IPList.txt`的文本文件,接着在192.168.1.1到192.168.1.100的范围内对每个IP执行`ping`命令。`ping -n 2`参数表示只发送两次ping...

    WinXP如何跟踪IP地址以解决网络出现的问题.docx

    - `IPList.txt` 用于将所有输出追加到IPList.txt文件中。 - `echo off`, `cls`, `Echo Finished!` 清除屏幕并显示完成提示。 - `@Echo on` 开启命令行的回显。 - `Notepad.exe IPList.txt` 使用记事本打开IPList.txt...

    batchTelnet.zip

    1. 读取`iplist.csv`中的IP地址和端口信息。 2. 对每个IP地址,使用`socket`模块尝试建立TCP连接。 3. 记录连接结果(成功/失败/超时)和其他相关信息,如响应时间。 4. 将结果写入`iplist_out.csv`。 5. 提供用户...

    ftp批量上传文件bat

    @echo delete iplist.txt @del iplist.txt @setlocal EnableDelayedExpansion @echo create upload iplist.... @for /L %%i in (51,1,52) do ( @echo 10.98.21.%%i&gt;&gt;iplist.txt ) @echo list file name..... @dir ....

    C#调用C++ Dll关于结构体数组引用的传递及解析使用的展示代码

    需要注意的是,因为C++ DLL中的函数使用了`__cdecl`调用约定,所以在C#中也需要指定相同的调用约定。 #### 结构体数组的传递与解析 对于结构体数组的传递,我们需要创建一个结构体数组并将其转换为`IntPtr`类型,...

    pexpect_deploy_tools:批量远程操作脚本-- scp 和 ssh

    pscp.py 拷贝本地文件到远程机器(iplist.txt)列表的制定目录 pscp.py iplist.txt source_localfile destpath 说明: iplist.txt: 远程机器列表 source_localfile: 需要拷贝的文件 destpath: 远程目的路径 rshell.py ...

    IpList(遍历指定子网掩码和IP地址内所有有效地址)

    遍历指定掩码和IP地址内所有有效地址!程序简短高效!c++程序

    Android开发实现读取Assets下文件及文件写入存储卡的方法

    由于直接在代码中声明大型的Byte数组会导致编译错误,因此我们可以选择将这些数据保存到Assets目录下的文件中,然后在运行时动态读取。下面我们将详细探讨如何实现这个过程。 首先,Android的Assets目录是一个特殊...

    Nacos服务发现与注册源码分析.zip

    在Nacos的源码中,服务注册涉及到`com.alibaba.nacos.naming.core.ServiceManager`和`com.alibaba.nacos.naming.iplist.PublicIpParser`等关键类。`ServiceManager`负责管理所有的服务,`PublicIpParser`则解析并...

    检查公网IP并发送邮件

    这通常涉及到文件I/O操作,读取并解析"IPlist.txt"中的数据。C/C++中的标准库提供了读写文件的功能,例如fopen、fgets和fclose等函数。 在"test.cpp"中,我们可以看到源代码实现了这些功能。它可能包含了HTTP请求的...

    delphi xe10获得本机所有IP地址.rar

    IPList.Free; end; end; ``` 以上代码片段展示了如何使用Indy获取本机的IPv4地址,并将它们打印出来。 在实际应用中,你可能需要根据具体需求筛选出特定类型的IP地址,比如仅显示IPv4或IPv6。这可以通过检查每个...

    怎样在XP系统下避免IP地址被跟踪.docx

    - `ECHO 192.168.1.%%F Timed Out &gt;&gt; IPList.txt`:将未使用的IP地址记录到IPList.txt文件中。 - `NOTEPAD.EXE IPList.txt`:使用记事本打开并查看IPList.txt文件。 3. **注意事项** - 在实际应用中,请根据自己...

    VB编程源代码 53获取本机及其名和Ip地址.rar

    ipList.Add(unicastAddress.Address) End If Next End If Next ``` 这段代码会遍历所有活动的网络接口,并将IPv4的单播地址添加到列表中。你可以根据实际需求,比如选择第一个或者特定的IP地址。 3. **显示...

    懒人QQ《局域网通讯》

    5. **配置文件**:config.ini和iplist.ini存储了用户设置和网络连接的相关信息。config.ini可能包含了用户的个人偏好设定,如语言选择、界面布局等;iplist.ini可能保存了局域网内的联系人列表和服务器地址。 6. **...

    一个批量域名解析的Shell脚本例子

    这段脚本首先定义了一个循环,读取`iplist.txt`文件中的每一行(假设每行是一个域名)。然后,它使用`nslookup`命令查询域名的IP地址,并通过`grep`和`awk`处理输出结果,提取出IP地址并打印出来。 `iplist.txt`是...

    双网卡IP切换

    通常,用户需要先在IPList.Config文件中定义好每个网络环境的IP配置,然后通过IPHelper.exe的界面选择相应的配置进行应用。在切换过程中,软件会自动更改选定网卡的IP地址、子网掩码、默认网关和DNS设置,确保网络...

    iplist-开源

    iplist是基于列表的数据包处理程序,它使用netfilter netlink-queue库(内核2.6.14或更高版本)。 它按IP地址过滤,并针对数千个IP地址范围进行了优化。

Global site tag (gtag.js) - Google Analytics