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