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