JAVA ADVANCED File IO IT 아카데미.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

컴퓨터와 인터넷.
I/O 프로그래밍 컴퓨터 공학실험(I) 인공지능 연구실.
자바네트워크 제2주 바이트 입출력 스트림, 필터 입출력 스트림 컴퓨터시뮬레이션학과 2014년 봄학기 담당교수 : 이형원
캡스톤 프로젝트(자바) 입출력.
입출력 I/O 유진석.
네트워크 프로그래밍 및 실습.
자바 5.0 프로그래밍.
Java의 정석 제 14 장 입출력(I/O) Java 정석 남궁성 강의
입출력 14.1 java.io 패키지의 개요 14.2 파일과 디렉토리
28강 JAVA 입출력(I/O) 알아보기 - 입출력(I/O) 이란? - JAVA 입출력 API(Input~, Output~)
제9장 입출력과 JNI.
Power Java 제3장 이클립스 사용하기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
10장 예외 Lab 10-1.
파일 입출력에 사용되는 자바 클래스들 JDK 라이브러리의 파일을 다루는 클래스들 파일의 내용을 읽고 쓰는 클래스들
Java 12장. 입출력 public class SumTest {
7장 파일과 데이터베이스.
14.3 문자(character) 스트림과 바이트(byte) 스트림
Lesson 3. 입출력과 제어문.
Chapter 14. 입출력 스트림.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
Java Programming Language (4)
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
18장. IO기반 입출력 및 네트워킹.
Lesson 6. 형변환.
5장. 참조 타입.
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
자바 5.0 프로그래밍.
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
3장 자바의 기본문법(2).
명품 JAVA Essential.
Chapter 03 : 서블릿 ( Servlet ) 개요. chapter 03 : 서블릿 ( Servlet ) 개요.
TCP/IP Socket Programming…
10장. 예외처리.
자바 5.0 프로그래밍.
명품 JAVA Programming.
입출력 CHAPTER 12 Section 1 java.io 패키지 개요 Section 2 파일과 디렉터리
I/O&socket통신 POWERPOINT & GROUP STUDY 한재희 김상훈 최기람 황인준 이어진.
7장 인터페이스와 추상 클래스.
JA A V W. 03.
자바 5.0 프로그래밍.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Lesson 4. 수식과 연산자.
29강 JAVA 스레드 - 스레드란? - 멀티스레드 문법 - synchronized Lecturer Kim Myoung-Ho
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
유승석 FILE I/O File Input/Output 유승석 SD50 – C# & .NET Platform.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
자바 5.0 프로그래밍.
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
자바 5.0 프로그래밍.
CHAP 21. 전화, SMS, 주소록.
Stream의 이해 : System Bufferring
MIDP 네트워크 프로그래밍 ps lab 김윤경.
발표자 : 이지연 Programming Systems Lab.
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
JSP Programming with a Workbook
06. 디바이스의 등록과 해제 김진홍
CODE INJECTION 시스템B 김한슬.
유승석 FILE I/O File Input/Output 유승석 SD50 – C# & .NET Platform.
6 객체.
3장 자바의 기본문법(2).
Presentation transcript:

JAVA ADVANCED File IO IT 아카데미

Folder Information with JTree 폴더안의 파일 리스트 보여주기

BufferedOutputStream Byte Stream InputStream FileInputStream FilterInputStream BufferedInputStream DataInputStream OutputStream FileOutputStream FilterOutputStream BufferedOutputStream DataOutputStream

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_

표준 입출력 표준 입력 표준 출력 표준 에러 System.in System.out System.err read() print(argument) println(argument) 표준 에러 System.err

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[])

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)

Character Stream Reader BufferedReader InputStreamReader FileReader Writer BufferedWriter OutputStreamWriter FileWriter

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[])

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)

FileReader / FileWriter 파일에 저장된 바이트 -> 유니코드 문자 유니코드 문자 -> 디폴트 문자 인코딩의 바이트 FileReader 생성자 FileReader(String filepath) FileReader(File fileObj) FileWriter FileWriter(String filePath) FileWriter(String filePath, boolean append) FileWriter(File fileObj)

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)

PrintWriter 생성자 메서드 PrintWriter(String filename) PrintWriter(File fileObj) 메서드 void print(String str) void println(String str)

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); dishin@dcslab.snu.ac.kr

PrintWriter Example dishin@dcslab.snu.ac.kr

Practice 대화창을 닫을 때 자동으로 대화 내용을 파일에 저장해보자 WindowDestroyer 클래스를 수정해야 함 Notepad2.java Calendar를 이용하여 현재날짜.txt 파일에 저장 ex) 20070720.txt” 에 저장

JAVA ADVANCED Multithread

멀티스레드 멀티태스킹 스레드 멀티스레드 하나의 컴퓨터로 여러 가지 일을 수행하는 것 멀티프로세스 시스템 여러 개의 프로세스가 하나의 CPU를 실행시간을 나누어서 작업을 수행하는 것 프로세스 스케쥴링 스레드 프로그램 수행에서 하나의 흐름 가상 CPU, 수행코드, 처리 데이터 멀티스레드 하나의 프로세스에서 여러 가지 일을 동시에 수행 각각의 스레드가 독립된 프로그램처럼 일을 수행

Multithread Programming in Java public class MyThread extends Thread { … public void run() { // implement this method } Runnable 인터페이스 이용 public class MyThread implements Runnable {

Practice 교재의 MyThread.java를 실행시켜보자

학습목표 스트림 ( Stream ) byte스트림 char스트림 node 와 filter 스트림 File 클래스 객체 직렬화 transient

정의 source destination 입출력 장치 종류 스트림 ( 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 FileInputStream LineNumberInputStream DataInputStream BufferInputStream PushbackInputStream Reader FilterReader InputStreamReader FileReader BufferedReader

출력 스트림 계층구조 스트림 ( Stream ) OutputStream FilterOutputStream FileOutputStream DataOutputStream BufferOutputStream PrintStream Writer FilterWriter OutputStreamWriter PrintWriter FileWriter BufferedWriter

스트림 ( Stream ) 표준 입출력 표준 입력 : 키보드 System.in 표준 출력 : 모니터 System.out

java.io.InputStream 스트림 ( Stream ) 특징 byte 입력을 하는데 필요한 메소드를 정의한 추상 클래스이다.

java.io.InputStream 스트림 ( Stream ) java.io.FileInputStream 시스템에 있는 파일을 읽을 수 있는 기능을 제공한다. byte 단위로 읽는다. 파일이 존재하지 않으면 FileNotFoundException이 발생된다. java.io.BufferedInputStream 버퍼링은 입출력 작업을 향상시키기 위해서 사용되는 기술이다. java.io.DataInputStream 기본형 데이터를 읽기 위한 메소드를 정의한다.

java.io.OutputStream 스트림 ( Stream ) 특징 byte 출력을 하는데 필요한 메소드를 정의한 추상 클래스이다.

java.io.OutputStream 스트림 ( Stream ) java.io.FileOutputStream 시스템에 있는 파일에 쓸수 있는 기능을 제공한다. byte 단위로 쓴다. java.io.BufferedOutputStream 버퍼가 채워질 때마다 대량으로 쓰기 작업이 된다. flush 기능은 버퍼에 채워지지 않더라고 쓰기 작업이 가능 java.io.DataOutputStream 기본형 데이터를 쓰기 위한 메소드를 정의한다. java.io.PrintStream 모든 데이터 형을 화면에 출력해주는 print() , println() 메소드가 정의됨.

java.io.Reader 스트림 ( Stream ) 특징 char 입력을 하는데 필요한 메소드를 정의한 추상 클래스이다. InputStream 과의 차이점은 2byte 로 읽을 수 있는 메소드가 제공된다.

java.io.Reader 스트림 ( Stream ) java.io.FileReader 시스템에 있는 파일에 읽을수 있는 기능을 제공한다. char 단위로 읽는다. 파일이 존재하지 않으면 FileNotFoundException이 발생된다. 읽은 데이터를 출력해도 글자 깨짐현상이 없다. java.io.BufferedReader 버퍼링으로 처리되면 한 라인을 읽을 수 있는 readLine() 메소드가 제공된다. 한 라인의 끝은 ‘\r’, ‘\n’ 중 하나가 올 경우 또는 ‘\r\n’ 이 오는 경우에 인식한다.

java.io.Writer 스트림 ( Stream ) 특징 char 출력을 하는데 필요한 메소드를 정의한 추상 클래스이다. OutputStream 과의 차이점은 2byte 로 쓸 수 있는 메소드가 제공된다.

java.io.Writer 스트림 ( Stream ) java.io.FileWriter 시스템에 있는 파일에 쓸수 있는 기능을 제공한다. char 단위로 쓴다. 파일이 존재하지 않으면 자동생성된다. 생성자의 boolean 값에 따라서 덮어쓰기 또는 내용추가 인지 구별할 수 있다.

java.io.Writer 스트림 ( Stream ) java.io.BufferedWriter 버퍼링을 통한 char 단위 쓰기 스트림이다. 한 줄 내려쓰기를 할 수 있는 newLine() 메소드가 제공된다. java.io.PrintWriter 바이트 출력 및 문자 출력 모두 가능한 스트림이다. 자동 flush 기능을 포함한다.

InputStreamReader 와 OutputStreamWriter 바이트입력스트림을 문자입력스트림으로 변경시 사용한다. 예 > 키보드로 입력받은 바이트를 문자로 변경시. new InputStreamReader( System.in ); OutputStreamWriter 바이트출력스트림을 문자출력스트림으로 변경시 사용한다.

표준 입출력 예제 스트림 ( Stream ) System.out BufferedReader ( readLine() ) InputStreamReader System.out System.in

표준 입출력 스트림 결합 ( Filter Chain ) 스트림 ( Stream ) 표준 입출력 스트림 결합 ( Filter Chain ) System.in InputStreamReader BufferedReader ( readLine() ) System.out System.in node filter Node 계열에는 한 라인씩 읽을 수 있는 메소드가 없다. 효율적인 I/O 작업을 위해서 filter 계열을 사용한다.

파일 읽기/쓰기 예제 * 파일 읽기 * 파일 쓰기 File 클래스 write.txt FileReader BufferedReader ( readLine() ) write.txt FileWriter PrintWriter ( println() )

정의 등장배경 특징 동작방식 객체 직렬화 실행시 동적으로 할당되는 인스턴스 상태를 저장하거나 네트워크로 전송하는 기술. 파일이나 데이터베이스에 저장하지 않는한 동적으로 할당된 객체의 상태값은 보존이 안된다. 특징 객체의 상태를 지속시키는 방법론을 제공한다. 스트림을 통한 확장성을 제공한다. ( 파일, 네트워크 ) 분산환경에서 매우 중요한 개념이다. 동작방식 객체 상태가 byteStream으로 처리된다.

작성방법 객체 직렬화 java.io.Serializable 인터페이스를 구현한다. ( marker ) 인터페이스를 구현한 클래스의 모든 멤버변수가 직렬화 대상이 된다. 직렬화 작업에서 제외시킬 경우에는 transient 키워드 이용한다. 스트림을 이용하여 직렬화 또는 역직렬화 작업을 한다. ObjectOutputStream의 writeObject() 메소드 이용. ObjectinputStream의 readObject() 메소드 이용.

객체 직렬화 예제

객체 직렬화 예제

객체 직렬화 transient 예제