1028

란이:)·2022년 10월 28일
0

공부일지

목록 보기
16/30

package com.greedy.section03.filterstream;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Application2 {

public static void main(String[] args) {
	
	/* 
	 * 형변환 보조 스트림
	 * 기본 스트림이 byte 기반 스트림이고, 보조스트림이 char기반 스트림인 경우 사용한다.
	 * */
	
	/*
	 * 표준 스트림
	 * 자바에서는 콘솔이나 키보드 같은 표준 입출력 장치로부터 데이터를 입출력하기위한 스트림을 
	 * 표준 스트림 형태로 제공하고 있다.
	 * 
	 * System.in(InputStream) : 콘솔로부터 데이터를 입력받는다.
	 * System.out(PrintStream) : 콘솔로 데이터를 출력한다.
	 * System.err(PrintStream) : 콘솔로 데이터를 출력한다.
	 * */
	
	/* System.in을 InputStreamReader로 변환하여 바이트기반 스트림을 문자기반스트림으로 변환 후
	 * 버퍼를 이용한 보조스트림과 연결했다.
	 * */
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	
	try {
		System.out.print("문자열 입력 : ");
		String value = br.readLine();
		
		System.out.println("value : " + value);
	} catch (IOException e) {
		
		e.printStackTrace();
	} finally {
		
		if(br != null) {
			
			try {
				br.close();
			} catch (IOException e) {
				
				e.printStackTrace();
		   }
	    }
     }
	BufferedWriter bw = new BufferedWriter(new OutputStreamWriter (System.out));
	
	try {
		bw.write("java oracle jdbc");
	} catch (IOException e) {
		
		e.printStackTrace();
	} finally {
		if(br != null) {
			try {
				bw.close();
			}catch (IOException e) {
				
				e.printStackTrace();
		}
	}
}

}}
문자열 입력 : hello
value : hello
java oracle jdbc


package com.greedy.section03.filterstream;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import com.greedy.section03.filterstream.dto.MemberDTO;

public class Application3 {

public static void main(String[] args) {
	
	/* 객체 단위로 입출력을 하기 위한 ObjectInputStream/ ObjectOutputStream */
	
	MemberDTO[] outputMembers = {
		new MemberDTO("user01", "pass01", "홍길동", "hong777@greedy.com", 25, '남', 1250.7),	
		new MemberDTO("user02", "pass02", "유관순", "korea31@greedy.com", 16, '여', 1221.6),	
		new MemberDTO("user03", "pass03", "이순신", "leesoonsin@greedy.com", 22, '남', 1234.6)
	};
	
	ObjectOutputStream objOut = null;
	
	try {

// objOut = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("src/com/greedy/section03/filterstream/testOutputStream.txt", true)));

		/* 객체 출력을 기존의 파일에 이어붙이기 하고 싶을 때 */
		/* exists() : 파일이 존재하는지 여부를 확인
		 * */
		if(new File ("src/com/greedy/section03/filterstream/testOutputStream.txt").exists()) {
			/*파일이 있는 경우 */
			objOut = new MyOutputStream(new BufferedOutputStream(new FileOutputStream("src/com/greedy/section03/filterstream/testOutputStream.txt", true)));
		}else {
			/* 파일이 없는 경우(처음입력일 경우)*/
			objOut = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("src/com/greedy/section03/filterstream/testOutputStream.txt", true)));
		}
		
		
		
		
		
		for(int i = 0; i < outputMembers.length; i++) {
			
			objOut.writeObject(outputMembers[i]);
		}
		
		objOut.flush();
	} catch (IOException e) {
	
		e.printStackTrace();
	} finally {
		
		if(objOut != null) {
			
			try {
				
				objOut.close();
			} catch (IOException e) {
			
				e.printStackTrace();
			}
		}
	}
	
	
	/* 위에 있는 내용을 직렬화 처리를 안하게되면 NotSerializableException이 발생하는 것을 확인할 수 있다.
	 * 
	 * 직렬화란?
	 * 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부에서도 사용할 수 있도록
	 * 바이트(byte)형태로 데이터를 변환하는 기술을 말한다.
	 * 
	 * 반대로 바이트로 변환된 데이터를 다시 객체로 변환하는 기술을 역직렬화라고한다.
	 * */
	
	MemberDTO[] inputMembers = new MemberDTO[3];
	
	ObjectInputStream objIn = null;
	
	try {
		objIn = new ObjectInputStream(new BufferedInputStream(new FileInputStream("src/com/greedy/section03/filterstream/testOutputStream.txt")));
		
		while(true) {
			
			System.out.println((MemberDTO) objIn.readObject());
		}
		
	} catch(EOFException e) {
		/* EOFException 해당 파일에서 더이상 읽을 내용없는 경우 발생시키는 예외 */
		System.out.println("끝");
	} catch (IOException e) {
		
		e.printStackTrace();
	} catch (ClassNotFoundException e) {
		
		e.printStackTrace();
	} finally {
		
		if(objIn != null) {
			
			try {
				
				objIn.close();
			} catch (IOException e) {
				
				e.printStackTrace();
			}
		}
	}
	
	
}

}
MemberDTO [id=user01, pwd=pass01, name=홍길동, email=hong777@greedy.com, age=25, gender=남, point=1250.7]
MemberDTO [id=user02, pwd=pass02, name=유관순, email=korea31@greedy.com, age=16, gender=여, point=1221.6]
MemberDTO [id=user03, pwd=pass03, name=이순신, email=leesoonsin@greedy.com, age=22, gender=남, point=1234.6]

package com.greedy.section03.filterstream;

import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;

public class MyOutputStream extends ObjectOutputStream {

protected MyOutputStream(OutputStream out) throws IOException, SecurityException {
	super();

}

@Override
protected void writeStreamHeader() throws IOException {
	
	/* 헤더 저장할 때 아무것도 안하도록 비워둘것이다.*/
}

}

sqldeve -> developer -> ide tool
oraclexE-> 데이터

압축풀기 -> exe파일 set up 전부 next -> 비밀번호 oracle

profile
FE Developer 🐥

0개의 댓글