본문 바로가기

개발자노트

Resource의 문자들을 [.parseInt]를 사용하여 연산하기

내가 쓴 Resource 파일인 test2.txt 에는 1234라는 값이 저장되어있는데,

이 값들의 합을 출력 하고 싶다.

일반적으로는 각각의 값을 받아서 더해주면 되는데 FileInputSteam을 하게 되면,

1의 아스키코드인 49, 2의 아스키코드인 50, 3의 아스키코드인 51 ...등등이 출력될 것이고,

문자형으로만 형변환을 한다면 문자끼리의 연산이 되지 않아 "1234"로 출력될 것이다.

이럴 때 사용되는 것이 .parseInt 이다.

parseInt는 입력받은 String 값을 Integer 형태로 변환해 리턴해주는 기능이다.

package class03;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class Test04_parseInt {

	public static void main(String[] args) {
		final String path1 = "C:\\Users\\test\\test\\resource\\"; // 경로는 고정적으로 사용 할 것이라 상수로 지정
		final String path2 = ".txt"; // 확장자명을 빠트릴 수 있으니 확장자명도 상수로 지정해둔다.

		int sum = 0; // 더한 값들을 넣기 위한 변수
		int data; // 관한 데이터를 int로 받기 위해 선언해둔다.
	
		try {
			FileInputStream f1 = new FileInputStream(path1 + "test2" + path2);
			while ((data = f1.read()) != -1) { // int 타입으로 f1의 요소들을 담는다. -1 즉 EOF 까지,
				System.out.println(data); // data에 잘 담겼는지 확인용 로깅
				char ch = (char) data; // int형인 data를 (char)형으로 형변환
				String str = ""; //	 아스키코드를 문자열로 받아넣기 위한 변수 
				str += ch; // 값들을 str에 더한다. 
				System.out.println(ch); // 잘 담겼는지 로깅
				int num = Integer.parseInt(str); // (str)문자열을 (Integer)로 변환한 값을 retrun
				sum += num; // 변환된 값을 sum에 넣어준다.

			}

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(sum);

		try {
			FileOutputStream fos = new FileOutputStream(path1 + "res" + path2);
			fos.write(sum); // "sum "+sum
			// 자바 파일입출력 문자열을 읽는법 / 넣는법
			// FileReader FileWriter

			fos.flush(); // 엔터값 제거

			fos.close(); // 식을 닫아준다.

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}