Blame view

src/main/java/com/batch/util/FileUtil.java 2.97 KB
8dc487b1   함상기   Init Version - 20...
1
2
3
  package com.batch.util;

  

  import java.io.BufferedReader;

dec8d909   함상기   2024-04-02 이전변경파일 복구
4
  import java.io.IOException;

8dc487b1   함상기   Init Version - 20...
5
  import java.io.InputStreamReader;

dec8d909   함상기   2024-04-02 이전변경파일 복구
6
  import java.io.RandomAccessFile;

8dc487b1   함상기   Init Version - 20...
7
8
9
10
11
12
13
14
15
16
  

  import org.springframework.core.io.ClassPathResource;

  

  import com.google.gson.Gson;

  import com.google.gson.JsonObject;

  import com.google.gson.JsonParser;

  

  public class FileUtil {

  

  	public static StringBuffer readFileToString(String resourceName) {

dec8d909   함상기   2024-04-02 이전변경파일 복구
17
18
  		StringBuffer sb = new StringBuffer();

  		try {

8dc487b1   함상기   Init Version - 20...
19
  			ClassPathResource resource = new ClassPathResource(resourceName);

dec8d909   함상기   2024-04-02 이전변경파일 복구
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
  			BufferedReader br = new BufferedReader(new InputStreamReader(resource.getInputStream()));

  

  			// br.readLine() 이 null 인지 검사할 때 한번 사용되므로 String 에 먼저 저장해둬야한다.

  			String s = "";

  			while ((s = br.readLine()) != null) {

  				sb.append(s);

  			}

  		} catch (Exception e) {

  			sb.append(e.getStackTrace());

  		}

  		return sb;

  	}

  

  	/**

  	 * 파일 마지막 부터 lineCnt 읽기

  	 * @param resourceName

  	 * @param lineCnt

  	 * @return

  	 */

  	public static StringBuffer readFileLastLines(String resourceName, int lineCnt, String fEnc, String toEnc) {

  		StringBuffer sb = new StringBuffer();

  

  //		lineCnt = 50; // test case

  //		resourceName = "D://logs/localhost_access_log.2019-03-26.txt"; // test case

  		

  		if(resourceName == null || resourceName.isEmpty()) {

  			sb.append("파일 경로가 입력되지 않았습니다.");

  		}else if(lineCnt < 1) {

  			sb.append("라인갯수가 입력되지 않았습니다.");

  		}else {

  			RandomAccessFile rf = null;

  		

  			try {

  				

  				rf = new RandomAccessFile(resourceName, "r");

  				long len = rf.length();

  				for (long i = len - 1; i >= 0; i--) {

  					rf.seek(i);

  					char c = (char) rf.read();

  					if (c == '\n') {

  						lineCnt--;

  						if(lineCnt < 0) {

  							break;

  						}

  					}

  					

  					sb.insert(0, c);

  				}

  				

  				/*** 필요 시 파일 인코딩. utf-8 **/

  				if(fEnc != null && !fEnc.isBlank() && toEnc != null && !toEnc.isBlank()) {

  					sb = new StringBuffer(new String((sb.toString()).getBytes(fEnc), toEnc));

  				}

  

  			} catch (Exception e) {

  //				e.printStackTrace();

  				sb = new StringBuffer("유효한 파일경로가 아닙니다.("+resourceName+")");

  			} finally {

  				if (rf != null) {

  					try {

  						rf.close();

  					} catch (IOException e) {

  //						e.printStackTrace();

  						sb = new StringBuffer("유효한 파일경로가 아닙니다.("+resourceName+")");

  					}

  				}

  			}

  		}

  		return sb;

8dc487b1   함상기   Init Version - 20...
89
90
91
92
93
94
  	}

  

  	public static JsonObject strToJsonObj(String jsonString) {

  		JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject();

  		return jsonObject;

  	}

dec8d909   함상기   2024-04-02 이전변경파일 복구
95
  

8dc487b1   함상기   Init Version - 20...
96
97
98
99
100
101
102
103
104
105
106
  	public static Object strToObj(String jsonString, Class<?> anyClass) {

  		Gson gson = new Gson();

  		Object convertedObject = gson.fromJson(jsonString, anyClass);

  		return convertedObject;

  	}

  

  	public static String objToStr(Object obj) {

  		Gson gson = new Gson();

  		String stringObject = gson.toJson(obj);

  		return stringObject;

  	}

dec8d909   함상기   2024-04-02 이전변경파일 복구
107
  

8dc487b1   함상기   Init Version - 20...
108
  }