본문 바로가기

개발/JAVA

Log파일 분할 저장하기

반응형

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.util.Vector;

public class logDiv {
 public static void main(String[] agrs) throws IOException {
  Scanner sn;
  File fl;
  BufferedWriter bw;
  FileWriter fw;
  Vector<String> vc = new Vector<String>();

  int x = 0;  //Scanner에서 읽어들인 총 라인수를 저장
  int y = 0;  //백터에 저장된 값을 get할때 사용(라인을 끊을때 기준점)
  int g = 0;  //저장될 파일의 Seq
  String data; //백터에 하기전 임시로 String 변수에 저장하여 백터로 저장

  fl = new File("./log/logfile.log.2009-10-15");  //로그가 저장되있는 파일
  sn = new Scanner(fl);
  while (sn.hasNext()) {  //읽어온 파일에 내용이 없을때까지
   data = sn.nextLine(); //한줄씩 읽어와서 String형 변수에 저장
   vc.add(data);   //String형 변수에 저장된 값을 백터에 삽입
   x++;     //읽어온 라인 카운트
  }
  if (x > 0) {    //읽어온 라인이 0이 아닐때
   for (int i = y; i < y + 100; i++) {  //y에 100을 더하여 100줄씩 끊겠다고 지정
    if (x == y) {
     break;   //x와 y가 같다는 말은 읽어올 줄이 더이상 없다는 뜻이므로 break
    } else {
     fw = new FileWriter("./log/logDiv_" + g ++ + ".log");
     bw = new BufferedWriter(fw);
    }
    for (int j = 0; j < 100; j++) {  //실제로 내용을 끊어 내는 for문 j<100은 100줄씩 끊겠다는 의미
     if (x == y) {
      break;   //x와 y가 같다는 말은 읽어올 줄이 더이상 없다는 뜻이므로 break
     }
     bw.write(vc.get(y)); //백터에서 y번째 값을 뽑아와서 다른파일에 입력
     bw.newLine();   //write만 쓴다면 다음줄로 내려가지 않기때문에 꼭 newLine() 호출
     bw.flush();    //flush를 사용하여 파일에 입력
     y++;     //y++을 함으로써 다음 백터에서 읽어올 장소 지정
    }
   }
  }
 }
}

반응형

자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!