• 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);      
    }  
    

      

  • 相关阅读:
    Java Arrays.asList注意事项
    从给定的N个正数中选取若干个数之和最接近M
    java 8 foreach获取索引
    更优雅地关闭资源
    idea 下获取路径下文件的方法
    IDEA类和方法注释模板设置(非常详细)
    503 Error: need EHLO and AUTH first
    fatal error C1083: Cannot open include file: 'openssl/opensslv.h'
    'pip' 不是内部或外部命令
    JS中every()和some()的用法
  • 原文地址:https://www.cnblogs.com/chengxin1982/p/4089725.html
Copyright © 2020-2023  润新知