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合并的更多相关文章

  1. Kubernetes 应用部署实战

    Kubernetes 应用部署实战 2018-08-08 19:44:56 wuxiangping2017 阅读数 3084  收藏 更多 分类专栏: linux运维与架构师   简介 伙计们,请搬好 ...

  2. Nmap详解

    扫描方式 -Pn/-P0:扫描前不用ping测试目标是否可达,默认所有目标端口都可达 -sT:TCP Connect扫描,进行完整的TCP三次握手,该类型扫描已被检测,且会在目标日志中记录大量连接请求 ...

  3. 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 ...

  4. 第5章 IP地址和子网划分(4)_超网合并网段

    7. 超网合并网段 7.1 合并网段 (1)子网划分是将一个网络的主机位当网络位,来划分出多个子网.而多个网段合并成一个大网段,合并后的网段称为超网. (2)需求分析 某企业有一个网段,该网段有200 ...

  5. 如果重新设计网络,有没有可能合并IP地址跟MAC地址?

    前阵子看网络基础相关的书籍,冒过一个疑问,为什么要有MAC地址跟IP地址?两者可否合二为一?   现在的逻辑是这样子:在数据传输过程中,路由器查看这个数据包的IP地址,跟路由表中记录的“IP集合:下一 ...

  6. 如何合并IP网段

    1. 安装IPy pip3 install IPy 2. 写脚本: yuyue@workplace:~ $ cat combine_ip.pyfrom IPy import IPSet, IPimpo ...

  7. 计算机网络学习笔记--网络层之IP地址与子网

    IPv4地址: 我们知道在网络层(TCP/IP体系结构的网际互联层),最重要的一个协议就是IP协议,现在正处于IPv4和IPv6的过渡时期,但目前来说,IPv4仍为主流,所以主要讲Ipv4. IP地址 ...

  8. [No000098]SVN学习笔记5-分支,合并,属性,补丁,锁,分支图

    行结束符和空白选项 在项目的生命周期中,有时可能会将行结束符由 CRLF 改为 LF,或者修改一段代码的缩进.不幸的是这样将会使大量的代码行被标记为已修改,尽管代码本身并没有被修改.这里列出的选项将会 ...

  9. TCP/IP协议(二)tcp/ip基础知识

    今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...

随机推荐

  1. 引用ZXing生成二维码

    1.生成二维码 ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口. Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码.本文引用 ...

  2. 20145202马超 2016-2017-2《Java程序设计》课程总结

    学号 2016-2017-2<Java程序设计>课程总结 (按顺序)每周作业链接汇总 预备作业1(http://www.cnblogs.com/tuolemi/p/6193756.html ...

  3. Unicode编码相关概念

    1.Unicode是一种字符映射方案,这种映射并不是编码(即还没有到二进制机器码层面),而是像一个电话本一样,把全世界所有语言使用的字符,都映射成一个"u+"开头的数字(在JAVA ...

  4. apache和IIS共存,服务器对外统一使用80端口

    apache和IIS共用80端口为了PHP与ASP各自的执行效率,要在服务器上安装iis与Apache,但是无法同时使用80端口,否则其中必定有一个启动不了.让它们共存的并且访问网站不需要加端口号,解 ...

  5. 你想找的Python资料这里全都有!没有你找不到!史上最全资料合集

    你想找的Python资料这里全都有!没有你找不到!史上最全资料合集 2017年11月15日 13:48:53 技术小百科 阅读数:1931   GitHub 上有一个 Awesome - XXX 系列 ...

  6. html div内第二行文字显示不下的时候才用省略号代替 css实现

    有时候文字太多,但为了美观想要在第二行的时候才显示省略号,而不是第一行超出马上就出现省略号 下面是css代码: overflow:hidden;text-overflow: ellipsis;//显示 ...

  7. katalon系列六:Katalon Studio Web UI关键字讲解

    在一个Test Case里,点左上Add-Web UI Keyword,可以添加一行新的命令. 像Click.setText.Delay这些最基本的,大家还是看看官方的API文档吧,望文知义,如果是纯 ...

  8. 后台可以用layui快速开发

    后台可以用layui快速开发

  9. 【json提取器】- 提取数据的方法

    json 提取器的使用 方法 json 提取器  提取的结果   我用调试取样器进行查看

  10. OpenMPI源码剖析1:MPI_Init初探

    OpenMPI的底层实现: 我们知道,OpenMPI应用起来还是比较简单的,但是如果让我自己来实现一个MPI的并行计算,你会怎么设计呢?————这就涉及到比较底层的东西了. 回想起我们最简单的代码,通 ...