관심쟁이 영호

[#1] 공공데이터파일 CSV파일을 자바로 읽어오기! 본문

IT/개발!

[#1] 공공데이터파일 CSV파일을 자바로 읽어오기!

관심쟁이 영호 2020. 11. 28. 06:30
반응형

안녕하세요!

관심쟁이 영호입니다.

 

오늘 해볼 내용은

CSV형식으로 되어있는 파일을 자바로 읽어오는 과정입니다!

 

바로 보시죠.

 


1. CSV파일을 구해야 합니다. 

CSV 파일은 공공데이터 포털에서 제공해주는 "경상남도 모범음식점.CSV" 파일을 이용할 예정이에요!

 

공공데이터 포털 홈페이지는 아래에 있어요!

https://www.data.go.kr/index.do

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

여기서 CSV파일 형식으로 파일을 다운로드했어요!

 

잠깐!

CSV파일이란? 

CSV(영어: comma-separated values)는 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일이다. 확장자는 . csv이며 MIME 형식은 text/csv이다. comma-separated variables라고도 한다. 

-출처 : 위키백과-

 

음 그럼 여기서 생각을 해볼게요!

많은 방식이 있겠지만

저는.. 한 라인씩 읽어와서! ","를 구분자로 이용하여 문자열을 자른 다음 저장을 하도록 할게요!

 

2. 첫 번째 준비물은 BufferReader 객체!

코드로 살펴볼게요!

 

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Launch_Program {

	Launch_Program() throws IOException { //생성자를 이용해서 읽어오기.
		String path = System.getProperty("user.dir"); // 현재폴더의 디렉토리 가지고 오기.
		File file = new File(path + "\\Data.csv"); // 현재 폴더의 디렉토리에 파일 저장해놓고 경로 지정.

		BufferedReader br = new BufferedReader(new BufferedReader(new FileReader(file))); //버퍼리더 만들기.

		String line = "";

		while ((line = br.readLine()) != null) { //한 라인씩 읽어오기.
			System.out.println(line);
		}

	}

}

 

3. 읽어온 파일을 저장하기.

 

- Record 객체로 이루어진 Doublely Linked List를 만듭니다.

- 읽어온 라인의 큰 따옴표 "", 띄어쓰기 처리 삭제 후  구분자 ","로 잘라냅니다. 그리고 문자 배열에 넣어줍니다.

 

String path = System.getProperty("user.dir"); // 현재폴더의 디렉토리 가지고 오기.
		File file = new File(path + "\\Data.csv"); // 현재 폴더의 디렉토리에 파일 저장해놓고 경로 지정.

		BufferedReader br = new BufferedReader(new BufferedReader(new FileReader(file))); // 버퍼리더 만들기.

		String line = "";
		int num = 0;
		while ((line = br.readLine()) != null) { // 한 라인씩 읽어오기.

			String first_Cut_string[] = line.replace(" ", "").split("\""); // 큰 따옴표 삭제 -> 띄워쓰기 삭제 -> 구분자 ","를
																			// 이용하여 자른다음 Cut_string에 넣기

			if (num != 0) {

				for (int i = 0; i < first_Cut_string.length; i++) {
					if (first_Cut_string[i].compareTo(",") == 0) {
						first_Cut_string[i] = "";
					}
				}

				String temp_string = "";
				for (int i = 0; i < first_Cut_string.length; i++) {

					if (i != first_Cut_string.length - 1) {
						temp_string += first_Cut_string[i] + ";";
					} else {
						temp_string += first_Cut_string[i];
					}
				}
				// System.out.println(temp_string);

				String Second_Cut_String[] = temp_string.replace(";;", ";").split(";");

				this.data.add(new Record(Second_Cut_String[1], Second_Cut_String[2], Second_Cut_String[3],
						Second_Cut_String[4], Second_Cut_String[5], Second_Cut_String[6], Second_Cut_String[7]));

			}

			num++;

- 파일은 실행 디렉터리에 저장

- 파일 경로는 현재 디렉터리로 등록

 

- csv파일을 한 라인 씩 읽으니까 구분자를 애매하게 사용해야 해서 이해하기 힘든 조작이 있어요! 저기는 이해 필요 xx

- 어쨌든 임의의 조작을 하고 csv를 받아와서 한 셀씩 나누어 주었습니다.

 

- 그리고 한 셀씩 나누어준 문자열을 이용하여 Record를 생성한 후 Doublely Linked List에 추가해줍니다.

 


오늘은 여기까지!

 

300x250
Comments