본문 바로가기

국비지원

[JAVA]IOstream - 2

반응형

split을 활용한 csv파일 입력스트림 연습

1. 버퍼리더로 입력받은 한 줄 한줄의 값을 split을 활용해 반점을 기준으로 잘라 data배열에 담는다.

2. 담겨진 배열의 각 인덱스 값을 CountryData 생성자 파라미터에 맞게 입력되게끔 한다.

3. 생성된 CountryData객체를  CountryInfo리스트에 add한다.

4. 이 때 주의할 점은 첫 readLine은 csv파일의 header부분이기에 While문 밖에서 한 줄 읽은 다음 와일문이 동작되어야한다.

나라정보
객체toString으로 콘솔출력한 모습 ( + 인구 총합)

public class Main2 extends JFrame {
	public static void main(String[] args) {
		File file = new File("D:\\myfolder\\country.csv");
		StringBuilder sb = new StringBuilder();
		List<CountryData> countryInfo = new ArrayList<>();
		try (BufferedReader br = new BufferedReader(new FileReader(file))) {
			String line = null;
			String[] data = null;
			br.readLine();
			while ((line = br.readLine()) != null) {
				data = line.split(",");
				System.out.println(Arrays.toString(data));
				CountryData cd = new CountryData(data[0], data[1], Integer.valueOf(data[2]), data[3],
						Integer.valueOf(data[4]));
				countryInfo.add(cd);
			}
			int sum = 0;
			for (int i = 0; i < countryInfo.size(); i++) {
				int pop = countryInfo.get(i).getPopulation();
				sum += pop;
			}
			DecimalFormat decFormat = new DecimalFormat("###,###");
			String str = decFormat.format(sum);
			System.out.println(str);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
반응형