IP地址的精细化操作(将IP地址转为相对应的地址)
第一步:
导入maven依赖:
<dependency>
<groupId>org.lionsoul</groupId>
<artifactId>ip2region</artifactId>
<version>1.7.2</version>
</dependency>
第二步,下载ip2region.db并将其放在resours下

第三步
插入代码
ceshiIP.java
package test;
import java.io.IOException;
import java.net.InetAddress;
import test.ttt;
public class ceshiIP0 {
public static void main(String[] args) throws IOException {
//获取IP地址
ttt t = new ttt();
String [] p=t.arr();//调用ttt.下的arr方法
String [] q=new String[p.length];//将获取后的城市加入数组中
for (int i=0;i<p.length;i++){
String hostAddress = p[i];
String detail = data1.getCityInfo(hostAddress);
q[i]="IP地址:"+hostAddress+"地区:"+detail;
System.out.println(q[i]);
// System.out.println("IP地址:"+hostAddress+"地区:"+detail);
}
}
}
data1.java(处理ip地址转化为城市)
package test; import org.lionsoul.ip2region.DataBlock;
import org.lionsoul.ip2region.DbConfig;
import org.lionsoul.ip2region.DbSearcher;
import org.lionsoul.ip2region.Util; import java.io.File;
import java.io.IOException;
import java.lang.reflect.Method;
import java.net.URL; public class data1 { /**
* 根据IP地址获取城市
* @param ip
* 如果放在服务器读取不了,两种方式
* 1.可以在服务器上创建文件,ip2region.db这个放在文件里面,然后开始读取
* 2.可以整个配置文件,在配置配置目录,然后读取配置文件
* @return
*/
public static String getCityInfo(String ip) throws IOException {
URL url = data1.class.getClassLoader().getResource("ip2region.db");
File file;
if (url != null) {
file = new File(url.getFile());
} else {
return null;
}
if (!file.exists()) {
System.out.println("Error: Invalid ip2region.db file, filePath:" + file.getPath());
return null;
}
//查询算法
int algorithm = DbSearcher.BTREE_ALGORITHM; //B-tree
//DbSearcher.BINARY_ALGORITHM //Binary
//DbSearcher.MEMORY_ALGORITYM //Memory
try {
DbConfig config = new DbConfig();
DbSearcher searcher = new DbSearcher(config, file.getPath());
Method method;
switch ( algorithm )
{
case DbSearcher.BTREE_ALGORITHM:
method = searcher.getClass().getMethod("btreeSearch", String.class);
break;
case DbSearcher.BINARY_ALGORITHM:
method = searcher.getClass().getMethod("binarySearch", String.class);
break;
case DbSearcher.MEMORY_ALGORITYM:
method = searcher.getClass().getMethod("memorySearch", String.class);
break;
default:
return null;
}
DataBlock dataBlock;
if (!Util.isIpAddress(ip)) {
System.out.println("Error: Invalid ip address");
return null;
}
dataBlock = (DataBlock) method.invoke(searcher, ip);
return dataBlock.getRegion();
} catch (Exception e) {
e.printStackTrace();
}
return null;
} }
ttt.java(从文件中取IP地址)
package test; import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException; public class ttt {
public static void main(String[] args) throws IOException {
String []p=new String[2000];
p=arr();
for (int i=0;i<p.length;i++){
System.out.println(p[i]);}
}
public static String [] arr() throws IOException {
String fileName = "src/main/java/result.txt";
File file = new File(fileName);
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line;
int index=0;
String[] arr=new String[2000];
while((line = br.readLine()) != null){
//process the line
// System.out.println(line);
arr[index]=line;
index++;
}
String [] b=new String[index];
String [] a=new String[index];
for(int i=0;i<index;i++)
{
// System.out.println("*********88"+a[0]); a=arr[i].split(",");
// System.out.println(a[0]);
b[i]=a[0]; }
return b;
}
}
Data.java(清洗时间)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer; public class Data { public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
FileReader read = new FileReader("src/main/java/result.txt");//要清洗的文件
BufferedReader br = new BufferedReader(read);
Writer writer = null;
File outFile = new File("result2.txt");//清洗后的文件存放位置
writer = new OutputStreamWriter(new FileOutputStream(outFile),"utf-8");
BufferedWriter bw = new BufferedWriter(writer);
String row;
String[] data=new String[6];
int hang=1;
try {
while((row = br.readLine())!=null){
data=change(row);
data=chage(data);
for(int i=0;i<data.length;i++) {
System.out.print(data[i]+"\t");
}
System.out.println();
row=data[0]+","+data[1]+","+data[2]+","+data[3]+","+data[4]+","+data[5];
bw.write(row + "\r\n");
//i++;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } private static String[] chage(String[] data) {
/*
* for(int i=0;i<data.length;i++) { data[] }
*/
data[0]=data[0];
char[] str=data[1].toCharArray();
String[] time=new String[7];
int j=0;
int k=0;
for(int i=0;i<str.length;i++) {
if(str[i]=='/'||str[i]==':'||str[i]==32) {
time[k]=data[1].substring(j,i);
j=i+1;
k++;
}
}
time[k]=data[1].substring(j, data[1].length());
switch(time[1]) { case "Jan":time[1]="01";break; case
"Feb":time[1]="02";break; case "Mar":time[1]="03";break; case
"Apr":time[1]="04";break; case "May":time[1]="05";break; case
"Jun":time[1]="06";break; case "Jul":time[1]="07";break; case
"Aug":time[1]="08";break; case "Sep":time[1]="09";break; case
"Oct":time[1]="10";break; case "Nov":time[1]="11";break; case
"Dec":time[1]="12";break; } data[1]=time[2]+"-"+time[1]+"-"+time[0]+" "+time[3]+":"+time[4]+":"+time[5];
data[3]=data[3].substring(0, data[3].length()-1);
return data;
} private static String [] change(String row) {
char [] str1=row.toCharArray();
String [] data =new String [6];
int j=0;
int k=0;
for(int i=0;i<str1.length;i++) {
if(str1[i]==',') {
data[k]=row.substring(j, i);
j=i+1;
k++;
}
}
data[k]=row.substring(j, str1.length);
return data;
} }
IP地址的精细化操作(将IP地址转为相对应的地址)的更多相关文章
- linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)
本文中的脚本适用范围: 1)检测某些IP地址是否被占用: 2)检测网络中某些设备是否存活: 3)在分配新的ip地址之前,批量检测环境中是否存在冲突的机器 以上检测基于ICMP Ping报文,要求所有的 ...
- ip地址掩码和位数对应关系表、子网掩码、网络地址、主机地址-yellowcong
本文链接:https://blog.csdn.net/yelllowcong/article/details/76736594ip的地址掩码,刚开始感觉特别蒙蔽,网掩码都是每段8位二进制,共32位,子 ...
- java正则表达式小练习(IP地址检测、排序,叠词的处理,邮件地址的获取)
import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; import java.util.reg ...
- IP地址分类及私网IP
5类IP地址: IP地址共有32位字节,其中A~C类IP地址由类标识号.网络地址和主机地址组成,A类标识最高位为0,网络地址为1字节,主机地址为3字节, B类标识最高位为10,网络地址为2字节,主机地 ...
- C#获取本机IP方法,获取本机局域网IP地址方法
1. private void GetIP() { string hostName = Dns.GetHostName();//本机名 //System.Net.IPAddress[] address ...
- MySQL远程(IP)连接报错:Host 'IP地址' is not allowed to connect to this MySQL server
ERROR 1130: Host ’192.168.1.3′ is not allowed to connect to this MySQL server这是告诉你没有权限连接指定IP的主机,下面我们 ...
- Nginx禁止直接通过IP地址访问网站以及限制IP登陆某目录(关闭默认站点或空主机头)
这篇文章主要介绍了Nginx中禁止使用IP访问网站的配置实例,一般在备案时可能需要这种设置,需要的朋友可以参考下 国内因为备案的原因,所有服务器都要禁止使用IP访问网站.否则,如果允许使用IP访问 ...
- 在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统? 网络层协议 MAC帧、IP数据报、TCP报文 关系 IP地址与硬件地址 链路层与网络层
小结: 1. 网络层两种服务 虚电路服务 virtual circuit 电信网 网络层负责可靠交付 数据报服务 网络层不负责可靠交付 提供灵活的.无连接的.尽最大努力交付的数据报服务 不提供服务 ...
- PHP获取IP地址的方法,防止伪造IP地址注入攻击
PHP获取IP地址的方法 /** * 获取客户端IP地址 * <br />来源:ThinkPHP * <br />"X-FORWARDED-FOR" 是代理 ...
- IP地址及子网--四种IP广播地址
国际规定:把所有的IP地址划分为 A,B,C,D,E. 类默认子网掩码:A类为 255.0.0.0; B类为 255.255.0.0; C类为 255.255.255.0.子网掩码是一个32位地址,用 ...
随机推荐
- 关于 ulimit 的两个天坑
稍微有点 Linux 经验的人一定会遇到过 "Too many open files" 错误,这个错误本质是 ulimit 设置不合理导致的.关于 ulimit 设置,有哪些需要注 ...
- docker容器单机编排
随着网站架构的升级,容器也使用的越发频繁,应用服务和容器间的关系也越发复杂. 这就要求研发人员能够更好的方法去管理数量较多的容器服务,而不能手动的去挨个管理. 例如一个LNMP的架构,就得部署web服 ...
- Java正则表达式语法及简单示例
import java.util.regex.Matcher; import java.util.regex.Pattern; public class TestMatcher { public st ...
- parsel的使用
介绍 parsel这个库可以解析HTML和XML,并支持使用XPath和CSS选择器对内容进行提取和修改,同时还融合了正则表达式的提取功能.parsel灵活强大,同时也是Python最流行的爬虫框架的 ...
- 记录一次学习mongodb的20个常用语句
// 查询当前数据库 db // // 查看所有数据库 show dbs// 创建数据库 use db_name// 删除数据库 db.dropDatabase()// 创建集合 db.createC ...
- Linux 获取 指定目录 下的 最大子目录深度
命令 function getDirMaxDepth() { folder_name="$1" if [ ! -d "$folder_name" ];then ...
- .NET App 与Windows系统媒体控制(SMTC)交互
当你使用Edge等浏览器或系统软件播放媒体时,Windows控制中心就会出现相应的媒体信息以及控制播放的功能,如图. SMTC (SystemMediaTransportControls) 是一个Wi ...
- 新品来袭,全国产ARM+FPGA--"RK3568J+Logos-2"工业核心板,让您的硬件设计“更简单”!
如需选购,请登录创龙科技天猫旗舰店: tronlong.tmall.com! 欢迎加入RK3568J技术交流群:567208221 欢迎加入Logos-2技术交流群:311416997 更多产品详情以 ...
- Nginx配置以及热升级
目录 Nginx详解 1. Nginx关键特性 2. Nginx配置 2.1 event 2.2 http 2.2.1 log_format 2.2.2 sendfile 2.2.3 tcp_nopu ...
- Linux运行等级
Linux运行级别 Linux system存在7个运行级别 运行级别0:所有进程终止,机器将有序停止,关机时就处于这个运行级别 运行级别1:单用户模式(root用户进行维护),系统中所有的服务也不会 ...