Ip合并
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List; public class Fileinfo extends Object {
private FileWriter writer;
private BufferedWriter bw; private FileReader reader;
private BufferedReader br; private FileReadCallback callbackfun; public Fileinfo() {
super();
} public Fileinfo(FileReadCallback callbackfun) {
super();
this.callbackfun = callbackfun;
} public void setMyCallback(FileReadCallback callbackfun) {
this.callbackfun = callbackfun;
} public boolean deleteFile(String sPath) {
boolean flag = false;
File file = new File(sPath);
// 路径为文件且不为空则进行删除
if (file.isFile() && file.exists()) {
file.delete();
flag = true;
}
return flag;
} public boolean IsFileExist(String sPath) {
boolean flag = false;
File file = new File(sPath);
// 路径为文件且不为空则进行删除
if (file.isFile() && file.exists()) {
flag = true;
}
return flag;
} public boolean CheckAndCreateFile(String filepath) throws IOException {
boolean flag;
File file = new File(filepath);
if (!file.isFile()) {
file.createNewFile();
}
return IsFileExist(filepath);
} public void Writeindex(String filepath, String value) {
try {
if (writer == null) {
CheckAndCreateFile(filepath);
writer = new FileWriter(filepath, false);
}
if (bw == null)
bw = new BufferedWriter(writer); writer = new FileWriter(filepath, false);
bw = new BufferedWriter(writer);
bw.write(value); bw.flush();
bw.close();
// System.gc(); } catch (IOException e) {
e.printStackTrace();
}
} public int Readlogindex(String filepath) {
int result = 0;
if (!IsFileExist(filepath)) {
return result;
} try {
if (reader == null)
reader = new FileReader(filepath); if (br == null)
br = new BufferedReader(reader); try {
String str = null;
if ((str = br.readLine()) != null) {
result = Integer.parseInt(str);
}
} finally {
// reader.close();
// br.close();
}
} catch (IOException e) {
e.printStackTrace();
} return result;
} public void Write(String filepath, boolean append, List<String> datalist) {
try {
if (writer == null) {
CheckAndCreateFile(filepath);
writer = new FileWriter(filepath, append);
}
if (bw == null)
bw = new BufferedWriter(writer); for (String index : datalist) {
bw.write(index);
bw.newLine();
}
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
} public void Write(String filepath, boolean append, String value) {
try {
if (writer == null) {
CheckAndCreateFile(filepath);
writer = new FileWriter(filepath, true);
}
if (bw == null)
bw = new BufferedWriter(writer); bw.write(value);
bw.newLine();
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
} public void Read(String filepath) {
try {
FileReader reader = new FileReader(filepath);
BufferedReader br = new BufferedReader(reader); String str = null;
while ((str = br.readLine()) != null) {
if (callbackfun != null) {
callbackfun.read(str);
}
}
} catch (IOException e) {
e.printStackTrace();
}
} protected void finalize() throws Throwable {
super.finalize();
System.out.println("finalize"); if (writer != null)
writer.close(); if (bw != null)
bw.close(); if (reader != null)
reader.close(); if (br != null)
br.close();
}
}
import java.util.ArrayList;
import java.util.List; import com.chexun.project.unit.*; public class IpMerge implements FileReadCallback {
class Ipdata {
long start;
long end;
String area; public long getStart() {
return start;
} public void setStart(long start) {
this.start = start;
} public long getEnd() {
return end;
} public void setEnd(long end) {
this.end = end;
} public String getArea() {
return area;
} public void setArea(String area) {
this.area = area;
} public Ipdata(String str) {
super();
parse(str);
} @Override
public String toString() {
return start + ", " + end + ", " + area;
} private void parse(String str){
String[] tmp = str.split(",");
if (3 == tmp.length){
start = Long.parseLong(tmp[0]);
end = Long.parseLong(tmp[1]);
area = tmp[2];
}
}
} private final List<String> iplist = new ArrayList<String>();
private Ipdata lastipdata;
long sum; public void read(String str) {
sum++;
Ipdata ipdata = new Ipdata(str);
if (lastipdata != null ){
if(ipdata.area != null && ipdata.area.equals(lastipdata.area)){
if (1 == (ipdata.start - lastipdata.end)) {
lastipdata.setEnd(ipdata.end);
}
}
else{
iplist.add(lastipdata.toString());
lastipdata = null;
}
}
else
lastipdata = ipdata;
} private void run(){
String dir = System.getProperty("user.dir");
String path = dir + "/resources/iptables.txt";
String outpathpath = dir + "/resources/iptablesnew.txt";
String path1 = "src/main/java/com.chexun.project.IpMerge/resources/iptables.txt";
Fileinfo fileinfo = new Fileinfo(this);
fileinfo.Read(path);
fileinfo.Write(outpathpath, false, iplist);
fileinfo =null;
System.gc();
} public static void main(String[] args) {
IpMerge ipmerge = new IpMerge();
ipmerge.run();
}
}
public interface FileReadCallback {
void read(String Str);
}
Ip合并的更多相关文章
- Kubernetes 应用部署实战
Kubernetes 应用部署实战 2018-08-08 19:44:56 wuxiangping2017 阅读数 3084 收藏 更多 分类专栏: linux运维与架构师 简介 伙计们,请搬好 ...
- Nmap详解
扫描方式 -Pn/-P0:扫描前不用ping测试目标是否可达,默认所有目标端口都可达 -sT:TCP Connect扫描,进行完整的TCP三次握手,该类型扫描已被检测,且会在目标日志中记录大量连接请求 ...
- python3 调用 centos 常用系统命令
一.创建目录 1 import os 2 3 base_path = '/data/sw_backup' 4 addr= 'FT' 5 ip='192.168.1.1' 6 path = base_p ...
- 第5章 IP地址和子网划分(4)_超网合并网段
7. 超网合并网段 7.1 合并网段 (1)子网划分是将一个网络的主机位当网络位,来划分出多个子网.而多个网段合并成一个大网段,合并后的网段称为超网. (2)需求分析 某企业有一个网段,该网段有200 ...
- 如果重新设计网络,有没有可能合并IP地址跟MAC地址?
前阵子看网络基础相关的书籍,冒过一个疑问,为什么要有MAC地址跟IP地址?两者可否合二为一? 现在的逻辑是这样子:在数据传输过程中,路由器查看这个数据包的IP地址,跟路由表中记录的“IP集合:下一 ...
- 如何合并IP网段
1. 安装IPy pip3 install IPy 2. 写脚本: yuyue@workplace:~ $ cat combine_ip.pyfrom IPy import IPSet, IPimpo ...
- 计算机网络学习笔记--网络层之IP地址与子网
IPv4地址: 我们知道在网络层(TCP/IP体系结构的网际互联层),最重要的一个协议就是IP协议,现在正处于IPv4和IPv6的过渡时期,但目前来说,IPv4仍为主流,所以主要讲Ipv4. IP地址 ...
- [No000098]SVN学习笔记5-分支,合并,属性,补丁,锁,分支图
行结束符和空白选项 在项目的生命周期中,有时可能会将行结束符由 CRLF 改为 LF,或者修改一段代码的缩进.不幸的是这样将会使大量的代码行被标记为已修改,尽管代码本身并没有被修改.这里列出的选项将会 ...
- TCP/IP协议(二)tcp/ip基础知识
今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...
随机推荐
- BZOJ2330_糖果_KEY
题目传送门 看题目可知这是一道差分约束的题目. 根据每种关系建边如下: 对于每种情况建边,然后跑一边SPFA.(最长路) 因为可能会有自环或环的情况,都不可能存在. 跑SPFA时记录入队次数,超过N弹 ...
- 全国Uber优步司机奖励政策 (1月4日-1月10日)
本周已经公开奖励整的城市有:北 京.成 都.重 庆.上 海.深 圳.长 沙.佛 山.广 州.苏 州.杭 州.南 京.宁 波.青 岛.天 津.西 安.武 汉.厦 门,可按CTRL+F,搜城市名快速查找. ...
- DATA 转 16 进制
// 转 16进制 编码 NSData *data = [NSData dataWithBytes:(const void *)dataOut length:(NSUInteger)dataOutMo ...
- 16 pep8 编码规范
pep8 编码规范 Python Enhancement Proposals :python改进方案 https://www.python.org/dev/peps/ 1. 每级缩进用4个空格. 括号 ...
- 在线大数据cdh迁移,从公有云迁移到私有云
1.添加新节点 2.迁移hdfs和hbase数据: 3.迁移源节点各个服务到新节点: 4.利用HA,包括hdfs,hbase master,resourcemanager的ha实现在线迁移: 5.数据 ...
- 算法------------数组----------------两个数组的交集 II
给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = [4,9,5 ...
- 在ubuntu安装python, theano, keras , Spearmint, Mongodb
系统配置: Ubuntu 14 (其他系统也差不多如下操作) 1. 通过anaconda安装 python 地址: https://www.continuum.io/downloads#linux 2 ...
- iOS - Foundation相关
1.NSString A.创建的方式: stringWithFormat:格式化字符串 ,创建字符串对象在堆区域 @"jack& ...
- unity share current game screen
using UnityEngine; using System.Collections; using UnityEngine.UI; using System.IO; public class Tak ...
- 「赛后补题」Meeting(HDU-5521)
题意 A,B两个人分别在1和n区.每个区有若干点(区之间的点可以重复,各个区内点间的距离一致),给出区之间有联系的图以及到达所需时间.求两个人见面最短时间以及在哪个区碰面(可有多个) 分析 隐式图搜索 ...