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)