Java: File / FileReader

0
post-thumbnail

Q. 특정 파일의 내용을 불러온다
해당 데이터를 사용하여 정렬 / 분류 작업을 실시하려고 한다


File Read Class

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

public class getFile {

	private ArrayList<Student> testData;
	
	public void readyTestData() throws IOException {
		this.testData = new ArrayList<>();
		File file = new File("./Abc1115.csv");
		FileReader fr = new FileReader(file);
		BufferedReader br = new BufferedReader(fr);
		String line = null;
		Student student = null;
		while((line=br.readLine())!=null) {
			student = new Student();
			String[] splitedLine = line.split(",");
			student.setStdNo(Integer.parseInt(splitedLine[0].trim()));
			student.setEmail(splitedLine[1].trim());
			student.setKor(Integer.parseInt(splitedLine[2].trim()));
			student.setEng(Integer.parseInt(splitedLine[3].trim()));
			student.setMath(Integer.parseInt(splitedLine[4].trim()));
			student.setSci(Integer.parseInt(splitedLine[5].trim()));
			student.setHist(Integer.parseInt(splitedLine[6].trim()));
			student.setTotal(Integer.parseInt(splitedLine[7].trim()));
			student.setMgrCode(splitedLine[8].trim());
			student.setAccCode(splitedLine[9].trim());
			student.setlocalCode(splitedLine[10].trim());
			testData.add(student);
		}
		br.close();
		fr.close();
	}/* readyTestData() */

File

  • 파일의 기본 정보를 가져온다

FileReader

  • File을 매개변수로 받아 해당 파일의 내용을 읽는다
    File에 저장된 byte를 유니코드 문자로 변환해서 읽어들인다

BufferedReader

  • FileReader를 매개변수로 받아 좀 더 큰 스케일으로 읽어들인다
    FileReader로 읽어들인 내용을 보다 다양한 방식으로 처리하는 역할을 한다
    • BufferedReader.readLine() 메소드는 문자열을 한 줄씩 가져온다
    • 한 줄을 콤마(,) 단위로 나눠서 문자열 타입 배열에 넣는다
    • 배열의 요소요소를 정제하고 setter를 사용하여 생성자에게 전달한다
    • 이렇게 생성되는 객체 하나하나를 ArrayList에 넣어준다

최종적으로 완성된 ArrayList를 반환하면서 역할을 마친다.

✅ FileReader / BufferedReader 관련 내용
Astronaut's Note:티스토리


ArrayList는 두 가지 방향으로 사용될 수 있다.

  1. 곧바로 Business Logic으로 전달되어 서비스 제공에 필요한 데이터로 사용
  2. DAO를 거쳐 데이터베이스에 저장

쿼리를 통해 원만하게 해결될 문제라면 데이터베이스에 저장되는 것이 좋을 것이다.
데이터가 복잡하지 않으며 서비스에 필요한 연산이 간단하다면 곧바로 Business Logic Class에서 처리하는 것이 좋을 것이다.

목표에 맞춰서 사용한다.


0개의 댓글