一个简单的IP地址管理系统源代码

时间:2023-01-05 16:56:19

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StringReader;
import java.util.StringTokenizer;

/*
 * Created on 2005-1-12
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */

/**
 * @author Starshus
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class IPBook
{
    static boolean hasIP;
    public static void main(String [] args)
    throws Exception
    {
        int choice = -1;
        while (choice != 0)
        {
            IPBook ipBook = new IPBook();
            System.out.print("1.增加IP地址/n" +
              "2.查找IP地址/n" +
              "3.删除IP地址/n" +
              "0.退出程序/n输入:");
            BufferedReader in =
                new BufferedReader (
                        new InputStreamReader (System.in));
            String string = in.readLine();
            choice = Integer.valueOf(string).intValue();
            switch(choice)
            {
            case 1:{
                System.out.print("请以IP标准格式输入IP:/n" +
                  "比如127.0.0.1/n" +
                  "输入:");
                BufferedReader input =
                    new BufferedReader (
                            new InputStreamReader (System.in));
                String str = input.readLine();
                System.out.println(str);
                ipBook.writeIP(str);
            }break;
            case 2:{
                System.out.print("请输入你要查找IP地址的头地址/n" +
                  "比如你要查找127.0.0.1的话就请输入127/n" +
                  "输入:");
                BufferedReader input =
                    new BufferedReader (
                            new InputStreamReader (System.in));
                String str = input.readLine();
                long l = Integer.valueOf(str).longValue();
                ipBook.findIP(l);
                if(hasIP)
                {
                    String result = ipBook.findIP(l);
                    System.out.println(result);
                }else{
                    System.out.println("没有找到:(");
                }
            }break;
            case 3:{
                System.out.print("请输入你要删除IP地址的头地址/n" +
                  "比如你要删除127.0.0.1的话就请输入127/n" +
          "输入:");
                BufferedReader input =
                    new BufferedReader (
                            new InputStreamReader (System.in));
                String str = input.readLine();
                long l = Integer.valueOf(str).longValue();
                ipBook.deleteIP(l);break;
            }
            }
        }     
    }
    public void inputIP(String ip)
    throws Exception
    {
        try{
            BufferedReader in1 =
                new BufferedReader (
                        new FileReader("IPBook.txt"));
            String s1 = "",s2 = "";
            while ((s1 =in1.readLine())!= null)
            {
                s1 = s1+"/n";
                s2 = s2 + s1;
            }
            s2 = s2 + ip;
            DataInputStream in2 =
                new DataInputStream(
                    new ByteArrayInputStream((s2.getBytes())));
            DataOutputStream out =
                new DataOutputStream(
                    new BufferedOutputStream(
                            new FileOutputStream("IPBook.txt")));
            while (in2.available() != 0)
            {
                out.write(in2.read());
            }
            in2.close();
            out.close();
            System.out.println("写"+ip+"到文件IPBook.txt中!");
        }catch(Exception e){}
    }
    public String findIP(long ip)
    throws Exception
    {
        hasIP=true;
        String readLine ="";
        String result="";
        try{
            BufferedReader in =
                new BufferedReader (
                        new FileReader("IPBook.txt"));
            long top;
            while ( (readLine = in.readLine())!=null)
            {
                top = topTokenizer(readLine);
                if (top == ip)
                {
                    result += readLine+"/n";
                }
            }
            if(result=="")
                hasIP= false;
        }catch(Exception e){}
        return result;
    }
    public long topTokenizer(String ip)
    throws Exception
    {
        String top = "";
        try{
            StringTokenizer st = new StringTokenizer (ip,".");
            top = st.nextToken();
        }catch(Exception e){}
        return Integer.valueOf(top).longValue();
    }
    public boolean isIP(String str)
    throws Exception//判断格式是否正确
    {
        try{
            StringTokenizer st = new StringTokenizer (str ,".");
            String s1="",s2="",s3="",s4="";
            s1 = st.nextToken();
            s2 = st.nextToken();
            s3 = st.nextToken();
            s4 = st.nextToken();
         }
         catch(Exception e){}
        return true;
    }
    public void writeIP(String ip)//向文件中加写IP地址
    throws Exception
    {
        try{
            if(isIP(ip))
        {
            try{
                inputIP(ip);
            }catch(IOException e){}           
        }else
            System.err.println("请正确输入IP地址!");
        }catch(Exception e){}
    }
    public void deleteIP(long ip)//用头地址删除ip
    throws Exception
    {
        String find = "";
        String ss = "";
        findIP(ip);
        if(hasIP)
        {
            try{
                find = findIP(ip);
                String temp = "";
                BufferedReader in =
                    new BufferedReader(
                            new FileReader("IPBook.txt"));
                while (   (temp=in.readLine())!=null   )
                {
                    if(topTokenizer(temp)!=ip)
                    {
                        ss += temp+"/n";
                    }
                }
                BufferedReader in2 =
                    new BufferedReader(
                            new StringReader(ss));
                String sss = "";
                PrintWriter out =
                    new PrintWriter (
                            new BufferedWriter (
                                    new FileWriter("IPBook.txt")));
                while (  (sss = in2.readLine()) != null)
                {
                    out.println(sss);
                }
                out.close();
                System.out.println("已删除.");
            }
            catch(Exception e){}
        }else{
            System.out.println("没有找到:(");
        }
    }
}