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("没有找到:(");
}
}
}