-
tsv 파일의 내용 취득[공부] 프로그래밍/Spring・Spring Boot (JAVA) 2023. 8. 19. 15:23
tsv 파일의 내용 취득 처리
tsvFile이라는 변수에서 getInputStream() 메서드를 호출하여 TSV 파일의 입력 스트림을 가져오고, InputStream 타입 inputStream 변수에 저장한다. 이 입력 스트림을 통해 파일의 내용을 읽을 수 있게 된다. inputStream을 InputStreamReader로 감싸고, 그 위에 BufferedReader를 사용하여 버퍼링된 입력을 제공한다. 이렇게 함으로써 효율적으로 데이터를 읽을 수 있다. BufferedReader는 텍스트를 한 줄씩 읽을 수 있도록 도와준다.
line은 각 줄의 내용을 저장할 변수이고 lineNum은 현재 읽고 있는 줄의 번호를 저장하는 변수이다.
reader.readLine()은 파일에서 한 줄을 읽어오며, 만약 더 이상 읽을 줄이 없다면 (null을 반환한다면) 반복문이 종료된다. 각 줄을 읽을 때마다 lineNum이 증가하고, line 문자열을 \t (탭) 문자를 기준으로 나누어서 문자열 배열 columnArray에 저장한다.
lengthOfColumns라는 메서드를 호출하여 열의 길이를 조절한다. 이 메서드는 String [] 타입의 배열을 받아 열의 길이를 조절하여 반환한다. 만약 입력된 열의 길이가 10이 아니라면, 길이가 10인 새로운 String [] 배열 lengthOfColumns를 생성한다. System.arraycopy(columns, 0, lengthOfColumns, 0, Math.min(columns.length, 10)) 입력 열에서 새 배열로 최대 10개까지의 요소를 복사한다.・ columns: 복사할 요소가 있는 원본 배열
・ 0: 복사가 시작되어야 하는 원본 배열의 시작 인덱스
・ lengthOfColumns: 요소가 복사될 대상 배열
・ 0: 복사된 요소가 배치되어야 하는 대상 배열의 시작 인덱스
・ Math.min(columns.length, 10): 복사할 요소의 개수
・ 소스 배열의 길이(columns.length)와 원하는 길이(10) 사이의 최솟값을 계산하여 소스 배열의 요소가 10개 미만인 경우 최대 10개의 요소만 복사되도록 한다.나머지 요소들을 빈 문자열로 채워 열의 길이를 10으로 맞추어준다.
InputStream inputStream = tsvFile.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; int lineNum = 0; while ((line = reader.readLine()) != null) { lineNum++; String[] columnArray = line.split("\t"); String[] columns = lengthOfColumns(columnArray); } public String[] lengthOfColumns(String[] columns) { if (columns.length != 10) { String[] lengthOfColumns = new String[10]; System.arraycopy(columns, 0, lengthOfColumns, 0, Math.min(columns.length, 10)); for (int i = columns.length; i < 10; i++) { lengthOfColumns[i] = ""; } return lengthOfColumns; } return columns; }
'[공부] 프로그래밍 > Spring・Spring Boot (JAVA)' 카테고리의 다른 글
tsv 파일 생성 (0) 2023.08.19 유효성 체크 (0) 2023.08.19 일시 생성 처리 (0) 2023.08.19 파일 확장자 제거 (0) 2023.08.19 iterator, Map (0) 2023.04.27