첨부된 "access.log" 파일을 읽어
요구사항에 알맞은 IP별 Hit수를 출력하시오.
요구 사항
1. 접근 URL이 "/login.do" 일 것
2. HTTP상태코드가 "200" 일 것
package Test03;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class logCheck {
public static void main(String[] args) {
List<String> logList = fileCheckMethod();
outPutMethod(logList);
}
public static List<String> fileCheckMethod() {
List<String> repCheck = new ArrayList<>();
// 原코드에는 try문 內에 있었지만 return을 하기 위해서 try문 밖으로 이동 하였다.
// try문 內에 있으면 return시 없는것을 return 하라는것으로 이해한다.
try {
//파일 입출력
File file = new File("C:\\Users\\최민준\\Downloads\\21년 코딩테스트 자료\\accessLog\\access.log");
//입력 스트림 생성
FileReader filereader = new FileReader(file);
//입력 버퍼 생성하기
BufferedReader bufReader = new BufferedReader(filereader);
String line = "";
Map<String, Integer> usemap = new HashMap<>();
// Integer,String형 map 선언
while ((line = bufReader.readLine()) != null) {
String s1 = line;
String[] s2 = s1.split(" ");
for (int i = 0; i < s2.length; i++) {
if (s2[i].equals("/login.do")) {
if ((i + 1) < s2.length && s2[i + 1].equals("200")) {
repCheck.add(s2[0]);
}
}
}
}
bufReader.close();
} catch (FileNotFoundException e) {
System.out.println("파일을 찾을수 없습니다");
} catch (IOException e) {
System.out.println(e);
}
return repCheck;
}
public static void outPutMethod(List<String> repCheck) {
List<String> outPutCheck;
outPutCheck = repCheck;
Map<String, Integer> usemap = new HashMap<>();
if ( outPutCheck != null) {
// 예외처리 부분 - null 아닐시
for (int j = 0; j < outPutCheck.size(); j++) {
if (usemap.containsKey(outPutCheck.get(j))) { // HashMap 내부에 이미 key 값이 존재하는지 확인
usemap.put(outPutCheck.get(j), usemap.get(outPutCheck.get(j)) + 1); // key가 이미 있다면 value에 +1
} else { // key값이 존재하지 않으면
usemap.put(outPutCheck.get(j), 1); // key 값을 생성후 value를 1로 초기화
}
}
for (String key : usemap.keySet()) {
System.out.println(key + "(" + usemap.get(key) + ")");
System.out.println("*********************************");
}
}
}
}
'Java 문제' 카테고리의 다른 글
[Java] 같은 숫자 제거 (0) | 2021.05.07 |
---|---|
문자열을 정수로 바꾸기 (0) | 2021.05.07 |
[Java] 중복 문자 구하기 (0) | 2021.05.07 |
[Java] 문자열이 따옴표(“ 또는 ‘)로 쌓였는지 검사 (0) | 2021.05.07 |
[Java] 입력 문자열 모두 연결하여 하나의 문자열로 (0) | 2021.05.07 |