JAVA ADVANCED

Download Report

Transcript JAVA ADVANCED

IT 아카데미
Folder Information with JTree
 폴더안의 파일 리스트 보여주기
Byte Stream
InputStream / OutputStream
InputStream
•
•
•
•
•
int available()
void close()
int read()
int read(byte buf[])
int read(byte buf[], int
offset, int numBytes)
• int skip(long
numBytes)
OutputStream
•
•
•
•
•
void close()
void flush()
void write(int i)
void write(byte buf[])
void write(byte buf[],
int index, int size_
표준 입출력
 표준 입력
 System.in

read()
 표준 출력
 System.out


print(argument)
println(argument)
 표준 에러
 System.err


print(argument)
println(argument)
FileInputStream /
FileOutputStream
 바이트 단위로 파일 입출력
FileInputStream
FileOutputStream
생성자
생성자
•FileInputStream(String filepath)
•FileInputStream(File fileObj)
•FileOutputStream(String FilePath)
•FileOutputStream(File fileObj)
메서드
메서드
•int close()
•int read()
•int read(byte buf[])
•void
•void
•void
•void
close()
flush()
write(int i)
write(byte buf[])
DataInputStream /
DataOutputStream
 자바 기본 자료형 데이터를 스트림으로 입출력
DataInputStream
DataOutputStream
생성자
생성자
•DataInputStream(InputStream stream)
•DataOutputStream(OutputStream stream)
메서드
메서드
•boolean readBoolean()
•byte readByte()
•char readChar()
•double readDouble()
•float readFloat()
•long readLong()
•short readShort()
•int readInt()
•void
•void
•void
•void
•void
•void
•void
•void
•void
•void
write(int i)
writeBoolean(boolean b)
writeByte(int i)
writeChar(int i)
wirteBytes(String s)
writeDouble (double d)
writeFloat(float f)
writeInt(int i)
writeLong(long l)
writeShort(short s)
Character Stream
Reader / Writer
 문자 입출력을 담당하는 추상클래스
Reader
• void close()
• int read()
• int read(char buf[])
Writer
•
•
•
•
void close()
void flush()
void write(String s)
void write(char
buf[])
InputStreamReader /
OutputStreamWriter
 Byte Stream <-> Character Stream
InputStreamReader
OutputStreamReader
생성자
생성자
•InputStreamReader(InputStream strea
m)
•InputStreamReader(InputStream strea
m, String enc)
•OutputStreamWriter(OutputStream out
)
•OutputStreamWriter(OutputStream out
, String enc)
메서드
메서드
•String getEncoding()
•String getEncoding()
FileReader / FileWriter
 파일에 저장된 바이트 -> 유니코드 문자
 유니코드 문자 -> 디폴트 문자 인코딩의 바이트
FileReader
FileWriter
생성자
생성자
• FileReader(String filepath)
• FileReader(File fileObj)
• FileWriter(String filePath)
• FileWriter(String filePath, boo
lean append)
• FileWriter(File fileObj)
BufferedReader / BufferedWriter
 버퍼링을 사용한 문자 입력 스트링
BufferedReader
BufferedWriter
생성자
생성자
•BufferedReader(Reader in)
•BufferedReader(Reader in, int size)
•BufferedWriter(Writer out)
•BufferedWriter(Writer out, int size)
메서드
메서드
•int read()
•String readLine()
•void newLine()
•void write(char[], int off, int len)
•void write(String s, int off, int len)
PrintWriter
 생성자
 PrintWriter(String filename)
 PrintWriter(File fileObj)
 메서드
 void print(String str)
 void println(String str)
PrintWriter
 자료를 문자열 표현으로 출력
new PrintWriter(Writer out, boolean autoflush=false);
new PrintWriter(OutputStream out, boolean autoflush=false);
print(Type data);
println(Type data);
 Type : int, long, float, double, boolean, char, char[], String,
Object
[email protected]
PrintWriter Example
[email protected]
Practice
 대화창을 닫을 때 자동으로 대화 내용을 파일에 저장
해보자
 WindowDestroyer 클래스를 수정해야 함
 Notepad2.java
 Calendar를 이용하여 현재날짜.txt 파일에 저장

ex) 20070720.txt” 에 저장
멀티스레드
 멀티태스킹
 하나의 컴퓨터로 여러 가지 일을 수행하는 것
 멀티프로세스 시스템


여러 개의 프로세스가 하나의 CPU를 실행시간을 나누어서 작업을
수행하는 것
프로세스 스케쥴링
 스레드
 프로그램 수행에서 하나의 흐름
 가상 CPU, 수행코드, 처리 데이터
 멀티스레드
 하나의 프로세스에서 여러 가지 일을 동시에 수행
 각각의 스레드가 독립된 프로그램처럼 일을 수행
Multithread Programming in Java
 Thread 클래스 이용
public class MyThread extends Thread {
…
public void run() {
// implement this method
}
}
 Runnable 인터페이스 이용
public class MyThread implements Runnable {
…
public void run() {
// implement this method
}
}
Practice
 교재의 MyThread.java를 실행시켜보자
학습목표
스트림 ( Stream )
byte스트림
char스트림
node 와 filter 스트림
File 클래스
객체 직렬화
transient
스트림 ( Stream )
정의
자바 애플리케이션 입장에서 데이터를 소스로부터 입력받거나
또는 목적지로 출력할 수 있도록 해주는 것.
자바의 입출력을 도와주는 매개체.
입력 스트림
source
자바
애플리
케이션
출력 스트림
destination
입출력 장치 종류
파일
키보드 , 모니터
메모리
네트워크 연결
이러한 장치에 데이터를 입력,출력해주기 위한 다양한 스트림이
제공된다.
스트림 ( Stream )
특징
단방향이다. ( Input 스트림 , output 스트림으로 구별 )
FIFO 구조이다.
스트림끼리의 연결이 가능하다. ( Filter Chain)
데이터 종류에 따른 분류
바이트(byte : 8bit )

동영상, 이미지, 사운드등과 같은 형태의 데이터 처리
문자( char : 16bit )

일반적인 문자 데이터 처리
스트림 ( Stream )
데이터 처리방식에 따른 분류
Node 스트림 계열


단순한 입출력만을 담당한다.
직접적인 장치에 연결된다.
예> InputStream , OutputStream, FileReader , FileWriter
FileInputStream , FileOutputStream 등
Filter 스트림 계열


입력된 데이터를 조작하거나 , 조작된 데이터를 출력하는 추가
작업을 담당한다.
효율적인 입출력이 가능하다.
예> InputStreamReader , OutputStreamWriter, DataInputStream
DataOutputStream , BufferedReader , BufferedWriter,
ObjectInputStream , ObjectOutputStream 등
스트림 ( Stream )
입력 스트림 계층구조
InputStream
FilterInputStream
LineNumberInputStream
DataInputStream
BufferInputStream
FileInputStream
Reader
PushbackInputStream
FilterReader
InputStreamReader
FileReader
BufferedReader
DataInputStream
스트림 ( Stream )
출력 스트림 계층구조
OutputStream
FilterOutputStream
DataOutputStream
BufferOutputStream
PrintStream
FileOutputStream
Writer
FilterWriter
OutputStreamWriter
PrintWriter
BufferedWriter
FileWriter
스트림 ( Stream )
표준 입출력
표준 입력 : 키보드

System.in
표준 출력 : 모니터

System.out
스트림 ( Stream )
java.io.InputStream
특징

byte 입력을 하는데 필요한 메소드를 정의한 추상 클래스이다.
스트림 ( Stream )
java.io.InputStream
java.io.FileInputStream



시스템에 있는 파일을 읽을 수 있는 기능을 제공한다.
byte 단위로 읽는다.
파일이 존재하지 않으면 FileNotFoundException이 발생된다.
java.io.BufferedInputStream

버퍼링은 입출력 작업을 향상시키기 위해서 사용되는 기술이다.
java.io.DataInputStream

기본형 데이터를 읽기 위한 메소드를 정의한다.
스트림 ( Stream )
java.io.OutputStream
특징

byte 출력을 하는데 필요한 메소드를 정의한 추상 클래스이다.
스트림 ( Stream )
java.io.OutputStream
java.io.FileOutputStream


시스템에 있는 파일에 쓸수 있는 기능을 제공한다.
byte 단위로 쓴다.
java.io.BufferedOutputStream


버퍼가 채워질 때마다 대량으로 쓰기 작업이 된다.
flush 기능은 버퍼에 채워지지 않더라고 쓰기 작업이 가능
java.io.DataOutputStream

기본형 데이터를 쓰기 위한 메소드를 정의한다.
java.io.PrintStream

모든 데이터 형을 화면에 출력해주는 print() , println() 메소드가
정의됨.
스트림 ( Stream )
java.io.Reader
특징


char 입력을 하는데 필요한 메소드를 정의한 추상 클래스이다.
InputStream 과의 차이점은 2byte 로 읽을 수 있는 메소드가
제공된다.
스트림 ( Stream )
java.io.Reader
java.io.FileReader




시스템에 있는 파일에 읽을수 있는 기능을 제공한다.
char 단위로 읽는다.
파일이 존재하지 않으면 FileNotFoundException이 발생된다.
읽은 데이터를 출력해도 글자 깨짐현상이 없다.
java.io.BufferedReader


버퍼링으로 처리되면 한 라인을 읽을 수 있는 readLine() 메소드가
제공된다.
한 라인의 끝은 ‘\r’, ‘\n’ 중 하나가 올 경우 또는 ‘\r\n’ 이 오는
경우에 인식한다.
스트림 ( Stream )
java.io.Writer
특징


char 출력을 하는데 필요한 메소드를 정의한 추상 클래스이다.
OutputStream 과의 차이점은 2byte 로 쓸 수 있는 메소드가
제공된다.
스트림 ( Stream )
java.io.Writer
java.io.FileWriter




시스템에 있는 파일에 쓸수 있는 기능을 제공한다.
char 단위로 쓴다.
파일이 존재하지 않으면 자동생성된다.
생성자의 boolean 값에 따라서 덮어쓰기 또는 내용추가 인지 구별할
수 있다.
스트림 ( Stream )
java.io.Writer
java.io.BufferedWriter


버퍼링을 통한 char 단위 쓰기 스트림이다.
한 줄 내려쓰기를 할 수 있는 newLine() 메소드가 제공된다.
java.io.PrintWriter


바이트 출력 및 문자 출력 모두 가능한 스트림이다.
자동 flush 기능을 포함한다.
스트림 ( Stream )
InputStreamReader 와 OutputStreamWriter
InputStreamReader

바이트입력스트림을 문자입력스트림으로 변경시 사용한다.
예 > 키보드로 입력받은 바이트를 문자로 변경시.
new InputStreamReader( System.in );
OutputStreamWriter

바이트출력스트림을 문자출력스트림으로 변경시 사용한다.
스트림 ( Stream )
표준 입출력 예제
System.out
BufferedReader
( readLine() )
InputStreamReader
System.in
스트림 ( Stream )
표준 입출력 스트림 결합 ( Filter Chain )
System.out
filter
BufferedReader
( readLine() )
node
InputStreamReader
System.in
System.in
Node 계열에는 한 라인씩 읽을 수 있는
메소드가 없다. 효율적인 I/O 작업을
위해서 filter 계열을 사용한다.
File 클래스
파일 읽기/쓰기 예제
* 파일 읽기
BufferedReader
( readLine() )
FileReader
write.txt
* 파일 쓰기
PrintWriter
( println() )
FileWriter
write.txt
객체 직렬화
정의
실행시 동적으로 할당되는 인스턴스 상태를 저장하거나 네트워크로 전송
하는 기술.
등장배경
파일이나 데이터베이스에 저장하지 않는한 동적으로 할당된 객체의 상태
값은 보존이 안된다.
특징
객체의 상태를 지속시키는 방법론을 제공한다.
스트림을 통한 확장성을 제공한다. ( 파일, 네트워크 )
분산환경에서 매우 중요한 개념이다.
동작방식
객체 상태가 byteStream으로 처리된다.
객체 직렬화
작성방법
java.io.Serializable 인터페이스를 구현한다. ( marker )


인터페이스를 구현한 클래스의 모든 멤버변수가 직렬화 대상이
된다.
직렬화 작업에서 제외시킬 경우에는 transient 키워드 이용한다.
스트림을 이용하여 직렬화 또는 역직렬화 작업을 한다.


ObjectOutputStream의 writeObject() 메소드 이용.
ObjectinputStream의 readObject() 메소드 이용.
객체 직렬화
예제
객체 직렬화
예제
객체 직렬화
transient 예제