관리 메뉴

거니의 velog

(11) 토요일 수업 2 본문

대덕인재개발원_final project

(11) 토요일 수업 2

Unlimited00 2023. 12. 30. 09:04
1. 사업관리팀
2. 품질관리팀
3. 공통기술팀
4. DB 팀
5. 응용기술팀

package ddit.chap13.test;

import java.util.HashMap;

/**
 * - HashMap의 기능을 그대로 사용하고 싶음
 * - 단 (key,value)의 구성 중 key는 String으로만 받고 싶음
 * - new HashMap()으로 생성하는 대신에 init() 함수로 생성하도록 구성
 * - getString(String key) 함수를 만들어서 String 반환하는 함수 제공
 * - getInt(String key) 함수를 만들어서 Integer 반환하는 함수 제공
 * - 반환타입을 동적으로 반환할 수 있는 함수 제공
 * 
 * - 현재 ParamMap 클래스의 파일 읽어서 콘솔에 나타내기
 */
public class ParamMap extends HashMap<String, Object> {

	private ParamMap() {}
	public static ParamMap init() { // ParamMap.init()
		return new ParamMap();
	}
	
	public String getString(String key) {
		Object object = this.get(key);
		if(object == null) {
			return null;
		}else {
			return String.valueOf(object); 
		}
		// return (String) object; => 위험함
	}
	
	public Integer getInt(String key) { // 래퍼클래스(Integer)의 참조형은 null을 가질 수 있다.
		Object object = this.get(key);
		if(object == null) {
			return null;
		}else {
			return Integer.parseInt(String.valueOf(object)); 
		}
	}
	
	public <T> T get(String key, Class<T> clazz) {
		Object object = this.get(key);
		if(object == null) {
			return null;
		}
		return (T) object; // exception이 발생할 것임.
	}

}
package ddit.chap13.test;

public class Test01 {

	public static void main(String[] args) {
		ParamMap param = ParamMap.init();
		
		param.put("test1", "testvalue");
		param.put("test2", 2);
		
		StringBuffer sb = new StringBuffer("test3==========");
		param.put("test3", sb);
		
		String p1 = param.getString("test1");
		String p2 = param.getString("test2");
		String p3 = param.getString("test3");
		
		Integer p4 = param.getInt("test2");
		StringBuffer p5 = param.get("test3", StringBuffer.class);
		
		System.out.println(p1);
		System.out.println(p2);
		System.out.println(p3);
		System.out.println(p4);
		System.out.println(p5);
	}
	
}


package ddit.chap13.test.util;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.List;

public class FileUtil {

	public static void read3(String path) throws Exception {
		// 작업절차 : 객체생성 -> 작업 -> 종료
		BufferedReader fr = new BufferedReader(new FileReader(path));
		//char[] ch = new char[500]; // 자동으로 담을 그릇을 만들었음.
		while(true) {
			String readLine = fr.readLine(); // 개행문자 단위로 힘껏 끌어 담는 것.
			if(readLine == null) { break; }
			System.out.println(readLine);
		}
		fr.close();
	}
	
	public static void read2(String path) throws Exception {
		// 작업절차 : 객체생성 -> 작업 -> 종료
		
		FileReader fr = new FileReader(path);
		//char[] ch = new char[1024]; // 그룹단위로 끌고 옴. 방을 0~1023개 만든 상태. 여기에 한 글자씩 집어 넣겠다는 것.
		char[] ch = new char[500]; // 그룹단위로 끌고 옴. 방을 0~1023개 만든 상태. 여기에 한 글자씩 집어 넣겠다는 것.
		while(true) {
			int read = fr.read(ch); // read : 읽은 글자의 수, ch : 읽은 데이터
			if(read == -1) break;
//			String str = new String(ch); // 이대로 하면 남은 공간에 글자가 덮어쓰기 되므로 메모리 낭비가 일어남.
			String str = new String(ch, 0, read);
			System.out.print(str);
			System.out.println(read); // 500 500 177
		}
		fr.close();
	}
	
	public static void read(String path) throws Exception {
		// 작업절차 : 객체생성 -> 작업 -> 종료
		
		FileReader fr = new FileReader(path);
		//char[] ch = new char[1024]; // 그룹단위로 끌고 옴
		while(true) {
			//int read = fr.read(ch);
			int read = fr.read(); // read : 읽은 문자의 값, io의 접속단위가 너무 많음.
			if(read == -1) break;
			//System.out.println(read);
			System.out.print((char)read);
		}
		fr.close();
	}

	public static List<String> readList(String path) {
		
		return null;
	}
	
	public static void main(String[] args) throws Exception {
			
		String path = "D:\\A_TeachingMaterial\\01_BasicJava\\workspace\\chapter13\\src\\ddit\\chap13\\test\\base\\ParamMap.java";
		//read(path);
		//read2(path);
		read3(path);
		
	}

}


'대덕인재개발원_final project' 카테고리의 다른 글

(13) 보강 9  (1) 2024.01.03
(12) 보강 8  (0) 2024.01.02
(10) 보강 7  (0) 2023.12.29
(9) 보강 6  (0) 2023.12.28
(8) 보강 5  (0) 2023.12.27