Remark : C# 으로만 생각하고 큰 파일 읽기를 했는데, 오류 인줄 알았다. 결국 읽기 속도가 엄청 느려서 발생한 문제 였다.
- java.lang.OutOfMemoryError
- java.lang.StackOverflowError for BufferedReader
Java 라서 그런지 파일을 읽는데 속도가 너무 느렸다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 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 |
package service; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; @Controller public class SimpleRead { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @GetMapping("ReadJson") public JSONObject ReadJson(String Filename) { //ReadJson String RetVal = ""; JSONObject jsonObject = new JSONObject(); try { JSONParser parser = new JSONParser(); try(BufferedReader br = new BufferedReader(new FileReader(Filename))) { String line; while ((line = br.readLine()) != null) { RetVal = RetVal + line; //System.out.println(line); } } jsonObject = (JSONObject) parser.parse(RetVal); } catch (ParseException | IOException e) { logger.debug(e.toString()); throw new RuntimeException(e); } return jsonObject; } } |
Solution : text 파일이 라인피드(엔터) 없이 한줄로 생성된 text 파일은 아무리 길어도 시간차 없이 바로 처리 되었다.
xml이나 Json 이면 웹서비스에서 데이타를 받을때 한줄로 받고 나중에 Pretty 를 하는 식으로 처리를 해 야 할것 같다.
속도 엄청 걸림
- java.lang.OutOfMemoryError
- java.lang.StackOverflowError for BufferedReader