第一步:

导入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地址转为相对应的地址)的更多相关文章

  1. linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)

    本文中的脚本适用范围: 1)检测某些IP地址是否被占用: 2)检测网络中某些设备是否存活: 3)在分配新的ip地址之前,批量检测环境中是否存在冲突的机器 以上检测基于ICMP Ping报文,要求所有的 ...

  2. ip地址掩码和位数对应关系表、子网掩码、网络地址、主机地址-yellowcong

    本文链接:https://blog.csdn.net/yelllowcong/article/details/76736594ip的地址掩码,刚开始感觉特别蒙蔽,网掩码都是每段8位二进制,共32位,子 ...

  3. java正则表达式小练习(IP地址检测、排序,叠词的处理,邮件地址的获取)

    import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; import java.util.reg ...

  4. IP地址分类及私网IP

    5类IP地址: IP地址共有32位字节,其中A~C类IP地址由类标识号.网络地址和主机地址组成,A类标识最高位为0,网络地址为1字节,主机地址为3字节, B类标识最高位为10,网络地址为2字节,主机地 ...

  5. C#获取本机IP方法,获取本机局域网IP地址方法

    1. private void GetIP() { string hostName = Dns.GetHostName();//本机名 //System.Net.IPAddress[] address ...

  6. 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的主机,下面我们 ...

  7. Nginx禁止直接通过IP地址访问网站以及限制IP登陆某目录(关闭默认站点或空主机头)

    这篇文章主要介绍了Nginx中禁止使用IP访问网站的配置实例,一般在备案时可能需要这种设置,需要的朋友可以参考下   国内因为备案的原因,所有服务器都要禁止使用IP访问网站.否则,如果允许使用IP访问 ...

  8. 在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统? 网络层协议 MAC帧、IP数据报、TCP报文 关系 IP地址与硬件地址 链路层与网络层

    小结: 1. 网络层两种服务 虚电路服务 virtual circuit  电信网 网络层负责可靠交付 数据报服务  网络层不负责可靠交付 提供灵活的.无连接的.尽最大努力交付的数据报服务 不提供服务 ...

  9. PHP获取IP地址的方法,防止伪造IP地址注入攻击

    PHP获取IP地址的方法 /** * 获取客户端IP地址 * <br />来源:ThinkPHP * <br />"X-FORWARDED-FOR" 是代理 ...

  10. IP地址及子网--四种IP广播地址

    国际规定:把所有的IP地址划分为 A,B,C,D,E. 类默认子网掩码:A类为 255.0.0.0; B类为 255.255.0.0; C类为 255.255.255.0.子网掩码是一个32位地址,用 ...

随机推荐

  1. NOIP模拟90(多校23)

    T1 回文 解题思路 原来 \(n^3\) 可以过 500 ... 先枚举一下路径长度,对于同一路径长度点数最多是 \(n\) 个,我们可以接着枚举从 \((n,m)\) 出发的路径长度相同的点. 然 ...

  2. js数组操作——对象数组根据某个相同的字段分组

    先说点废话 最近在实际业务中,需要编写一个方法根据数组中每一个对象的一个相同字段,来将该字段值相等的对象重新编入一个数组,返回一个嵌套的数组对象,特地来做个总结. 当然需要注意的是,在开发过程这种数组 ...

  3. ETL工具-nifi干货系列 第十二讲 nifi处理器UpdateRecord使用教程

    1.上一节课我们讲解了nifi处理器UpdateAttribute,专门用来更新flowFile的属性字段.本节课我们一起来学习UpdateRecord,该处理器用来更新flowFile的流文件内容数 ...

  4. SpringBoot系列(三)元注解

    元注解,注解的注解,SpringBoot有四个元注解,分别是@Target.@Retention.@Documented.@Inherited.下面就是对元注解的详细讲解和源码展示. @Taget 该 ...

  5. C程序函数调用&系统调用

    理解程序的执行 我们要知道CPU可以自由地访问寄存器.内存.另外,程序是由操作系统执行的,所以操作系统能够控制程序的所有执行情况,限制程序的行为. 程序地执行过程: 程序是一个二进制文件,包含程序的代 ...

  6. flutter 调用环信sdk 实现即时通讯

    首先下载依赖 导包 import 'package:im_flutter_sdk/im_flutter_sdk.dart';登录 import 'package:flutter/material.da ...

  7. 从Purge机制说起,详解GaussDB(for MySQL)的优化策略

    本文分享自华为云社区<[华为云MySQL技术专栏]GaussDB(for MySQL) Purge优化>,作者:GaussDB 数据库. 在MySQL中,尤其是在使用InnoDB引擎时,P ...

  8. 使用Microsoft.SemanticKernel基于本地运行的Ollama大语言模型实现Agent调用函数

    大语言模型的发展日新月异,记得在去年这个时候,函数调用还是gpt-4的专属.到今年本地运行的大模型无论是推理能力还是文本的输出质量都已经非常接近gpt-4了.而在去年gpt-4尚未发布函数调用时,智能 ...

  9. apisix~14在自定义插件中调用proxy_rewrite

    在 Apache APISIX 中,通过 proxy-rewrite 插件来修改上游配置时,需要确保插件的执行顺序和上下文环境正确.你提到在自己的插件中调用 proxy_rewrite.rewrite ...

  10. 什么是spring,它能够做什么?

    1.什么是SpringSpring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的. Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情. ...