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基础知识
今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...
随机推荐
- hive自定义函数——hive streaming
Hadoop Streaming提供了一个便于进行MapReduce编程的工具包,使用它可以基于一些可执行命令.脚本语言或其他编程语言来实现Mapper和 Reducer,Streaming方式是基于 ...
- 获取项目中.txt 文件的内容
package com.fh.controller.ruitai.util; import java.io.BufferedInputStream; import java.io.File; impo ...
- 最新flowable研究学习及其汉化flowable6.3中文
flowable 是activiti的分支,现在感觉比activiti要强大一些,官网是 https://flowable.org/ 下载最新的6.31版本. 放到tomcat下面,汉化需要对flow ...
- lesson 19 A very dear cat
lesson 19 A very dear cat dear adj. 亲爱的:尊敬的:昂贵的 表示几乎不,很少的词语 rarely hardly seldom scarcely flat = apa ...
- Siki_Unity_1-8_使用Unity开发2D游戏_PongGame
Unity 1-8 使用Unity开发2D游戏 PongGame 任务1:演示 http://pan.baidu.com/s/1pKUHsev; up2i 任务2:案例介绍 创建PongGame,注意 ...
- java 实现redis缓存
由于项目加载时请求数据量过大,造成页面加载很慢.采用redis作缓存,使二次访问时页面,直接取redis缓存. 1.redis连接参数 2.连接redis,设置库 3.配置文件开启缓存 4.mappe ...
- Response对象及常用方法
void addCookie(Cookie cookie)给客户端添加一个Cookie对象,以保存客户端的信息 void addDateHeader(String name,long value) 添 ...
- TW实习日记:第16天
前端的样式bug实在是太太太莫名其妙了,尤其是封装好的组件,一层套一层的,根本不知道是哪一层出了问题...除了改bug就是做新功能,真想吐槽一下这个项目的留言板,根本没人会用吧...这功能实在是太老旧 ...
- 【20180807模拟测试】T2 box
[问题描述] 有个桌子长 R 宽 C,被分为 R*C 个小方格.其中,一些方格上有箱子,一些方格上有按 钮,一些方格上有障碍物,一些方格上是空地.现在有个任务,需要把所有箱子推到这些按 钮上面.箱子有 ...
- SpringCloud IDEA 教学 番外篇 后台运行Eureka服务注册中心
写在开头 研发过程中经常要做的事就是启动Eureka服务注册中心,每每都要启动一个IDEA,很是困扰.现在分享一个后台启动服务注册中心的方法. 准备工作 1打包一个eureka服务注册中心jar包(注 ...