課程作業:撈取log檔中的IP
import java.io.*;
import java.net.*;
import java.util.*;
public class myLog01{
public static void main(String[] args) throws IOException{
URL fileURL = myLog01.class.getResource("/wiki.myruby.net-May-2012");
FileReader fileReader = new FileReader(fileURL.getFile());
BufferedReader bReader = new BufferedReader(fileReader);
String y;
int x=0;
while((y = bReader.readLine()) != null ){
++x;
}
System.out.println("此文件總共"+x+"個IP");
//用來逐行讀取,先求出ip總數(含重複)
String[] t;
String[] ip=new String[x];
int i=0;
FileReader f1=new FileReader(fileURL.getFile());
BufferedReader b1 =new BufferedReader(f1);
while((y = b1.readLine()) != null ) {
t=y.split(" ");
ip[i]=t[0];
++i;
}
//再從頭讀取一次,然後用空格做分割,再取出第一個位置的值直接放到ip陣列內
Arrays.sort(ip);
//把ip按照順序排列一次
int s=0;
int m = 0;
int j;
for(j=0; j<x-1 ; j++) {
if(ip[j].equals(ip[j+1])!=true){
s=j-s;
System.out.println(ip[j]+" 造訪 "+s+" 次");
s=j;
m++;
}
}
System.out.println(m+"個ip造訪");
}
}
//把陣列ip值做比較,後一個等於前一個的時候就做累計,用來求出同個ip有幾次的造訪
//最後再統計扣掉重複以後,總共是幾個ip造訪
檔案 wiki.myruby.net-May-2012 內容大概都像下面這樣
1.202.218.8 - - [30/Apr/2012:07:04:47 -0600] "GET /robots.txt HTTP/1.0" 404 2554 "-" "\"Mozilla/5.0"
最後運算的結果如下(取一行)
1.202.218.8 造訪 206 次
這個程式是用來練習撈取ip記錄檔,像大型網站要看有多少訪客的時候就可能用上這樣的程式撈資料
沒有留言:
張貼留言