Presentation is loading. Please wait.

Presentation is loading. Please wait.

14.3 문자(character) 스트림과 바이트(byte) 스트림

Similar presentations


Presentation on theme: "14.3 문자(character) 스트림과 바이트(byte) 스트림"— Presentation transcript:

1 14.3 문자(character) 스트림과 바이트(byte) 스트림
14장 입출력 14.1 java.io 패키지의 개요 14.2 파일과 디렉토리 14.3 문자(character) 스트림과 바이트(byte) 스트림 14.4 문자 스트림 14.5 바이트 스트림 14.6 RandomAccessFile 클래스 14.7 StreamTokenizer 클래스

2 14.1 java.io 패키지의 개요 자바의 입출력은 모든 하드웨어에 독립적으로 설계
자바는 입출력을 스트림(stream)으로 처리 스트림 : 순서가 있는 일련의 데이터를 의미하는 추상적인 개념 사용자는 스트림을 이용하여 입출력 수행 스트림을 이용하여 실제 다양한 하드웨어와 입출력을 수행하는 일은 JVM에 의해 실행 자바는 입출력을 위한 클래스들을 java.io 패키지로 제공 그림 14-1 참조

3 14.2 파일과 디렉토리 입출력을 위해 필요로 되는 파일과 디렉토리를 다루기 위한 File 클래스 제공 File 클래스 생성자
File(String directoryPath) File(String directoryPath, String filename) File(File dirObj, String filename) directorypath : 파일이 존재하는 디렉토리 경로이름(파일이름 포함) filename : 파일의 이름 dirObj : 디렉토리 경로명을 가지고 있는 File 객체

4 14.2 파일과 디렉토리 File 클래스의 메소드 boolean canRead() 파일이 읽기 가능하면 true, 아니면 false를 반환 boolean canWrite() 파일이 쓰기 가능하면 true, 아니면 false를 반환 boolean delete() 파일을 삭제하고 true를 반환, 파일을 삭제할 수 없으면 false를 반환 boolean equals(Object obj) 현재의 객체와 obj로 지정된 객체가 같은 파일을 가지고 있으면 true, 아니면 false를 반환 boolean exists() 파일이 존재하면 true, 아니면 false를 반환 String getAbsolutePath() 파일에 대한 절대 경로를 반환 String getCanonicalPath() 파일에 대한 정규 경로를 반환 String getParent() 부모 디렉토리 이름을 반환 String getName() 파일의 이름을 반환 String getPath() 파일의 경로를 반환 boolean isAbsolute() 경로가 절대 경로이면 true, 아니면 false를 반환 boolean isDirectory() 현재의 객체가 디렉토리이면 true, 아니면 false를 반환

5 14.2 파일과 디렉토리 File 클래스의 메소드 boolean isFile() 현재의 객체가 파일이면 true, 아니면 false를 반환 long lastModified() 1970년 1월 1일(GMT)부터 파일이 마지막으로 수정된 날자까지의 시간을 밀리 초로 반환 long length() 파일의 바이트 수를 반환 String[] list() 디렉토리에서 파일의 이름을 반환 boolean mkdir() 디렉토리를 생성. 경로로 지정된 모든 부모 디렉토리가 존재하여야 한다. 지정한 디렉토리가 생성되면 true를 반환하고, 아니면 false를 반환 boolean mkdirs() 디렉토리를 생성. 경로로 지정된 디렉토리가 존재하지 않으면 생성한 다음 지정한 디렉토리를 생성. 디렉토리가 생성되면 true를 아니면 false를 반환 boolean renameTo(File newName) 파일이나 디렉토리의 이름을 newName으로 변경한 다음 true를 반환. 이름을 변경하지 못하면 false를 반환

6 파일과 디렉토리 예제

7 14.3 문자 스트림과 바이트 스트림 스트림은 입출력 데이터의 추상적인 표현 문자 스트림 바이트 스트림
16비트 문자나 문자열을 읽고 쓰기 위한 스트림 Reader, Writer 클래스와 그 하위 클래스를 이용 바이트 스트림 바이트(8비트)를 읽고 쓰기 위한 스트림 InputStream, OutputStream 클래스와 그 하위 클래스를 이용

8 14.4 문자 스트림 문자 스트림과 연관된 클래스 BufferedReader Reader
InputStreamReader FileReader Object BufferedWriter Writer OutpurStreamWriter FileWriter PrintWriterI

9 14.4 문자 스트림 - (1) Writer 클래스와 Reader 클래스
문자스트림의 입출력에 필요로 되는 다양한 메소드를 제공하는 추상 클래스 Writer 클래스의 주요 메소드 void close() 출력 스트림을 닫는다 void flush() 출력 버퍼에 저장된 모든 데이터를 출력 장치로 전송 void write(int c) c의 하위 16비트를 스트림으로 출력 void write(char buffer[]) buffer 배열에 있는 문자들을 스트림으로 출력 void write(char buffer[], buffer 배열의 index 위치부터 size 크기만큼의 int index, int size) 문자들을 스트림으로 출력 void write(String s) 문자열 s를 스트림으로 출력 void write(String s, 문자열의 index 위치부터 size 크기만큼의 문자들을 int index, int size) 스트림으로 출력

10 14.4 문자 스트림 - (1) Writer 클래스와 Reader 클래스
void close() 입력 스트림을 닫는다 int read() 다음 문자를 읽어 반환한다. 입력 스트림에 읽을 문자가 없으 면 대기한다. 읽은 문자가 파일의 끝이면 -1을 반환 int read(char buffer[]) 입력 스트림으로부터 buffer 배열 크기만큼의 문자를 읽어 buffer에 저장 int read(char buffer[], 입력스트림으로부터 numChars에 지정한 만큼의 문자를 읽어 int offset, int numChars) buffer의 offset위치에 저장하고 읽은 문자의 개수를 반환 void mark(int numChars) 입력 스트림의 현재의 위치에 mark 한다. boolean markSupported() 현재의 입력 스트림이 mark()와 reset()을 지원하면 true를 반환 boolean ready() 다음 read()문을 수행할 수 있으면 true, 입력 스트림이 없어 기다려야 되는 경우에는 false를 반환 void reset() 입력 스트림의 입력 시작 부분을 현재의 위치에서 가장 가까운 이전의 mark 위치로 설정 int skip(long numChars) numChars로 지정된 문자 수만큼을 스킵하고 스킵된 문자의 수를 반환

11 (2) 입출력 예외 처리 자바는 입출력시 발생할 수 있는 예외의 처리를 요구한다
예외의 처리는 호출한 메소드에 넘겨주거나 메소드내에서 직접 처리하는 방법(9장 참조)이 있다

12 (2) 입출력 예외 처리 입출력 예외 처리의 일반적인 예
public static void main(String args[]) throws IOException { ...// 예외를 호출한 메소드로 넘겨주는 방법 FileWriter fw = new FileWriter(args[0]); fw.write("Line " + i + ""); fw.close(); } public static void main(String args[]) { // 예외를 직접 처리하는 방법 try { // 예외 발생 가능 영역 지정 catch(IOException e) { // 예외 처리 루틴 작성 System.our.println("Exception: " + e);

13 14.4 문자 스트림 (3) OutputStreamWriter 클래스와 InputStreamReader 클래스
문자 스트림을 바이트 스트림으로 변환하는 기능을 제공 생성자 OutputStreamWriter(OutputStream outstreams) OutputStreamWriter(OutputStream outstreams, String encoding) outstreams : 바이트 스트림으로 변환되어 출력될 출력스트림 encoding : 변환 방법 메소드 String getEncoding() // 스트림의 변환 방법을 반환하는 메소드

14 14.4 문자 스트림 (3) OutputStreamWriter 클래스와 InputStreamReader 클래스
바이트 스트림을 문자 스트림으로 변환하는 기능을 제공 생성자 InputStreamReader(InputStream instreams) InputStreamReader(InputStream instreams, String encoding) instreams : 입력될 바이트 타입의 스트림(InputStream 클래스) encoding : 변환 방법 메소드 String getEncoding() // 스트림의 변환 방법을 반환하는 메소드

15 14.4 문자 스트림 (4) FileWriter 클래스와 FileReader 클래스
OutputStreamWriter 클래스로부터 상속된 클래스 파일에 문자를 출력하는 기능을 제공 생성자 FileWriter(String filepath) throws IOException FileWriter(String filepath, boolean append) throws IOException FileWriter(File fileObj) throws IOException filepath : 파일의 이름(경로명 포함) fileObj : 특정 파일을 지정하고 있는 File 객체 append : true이면 파일의 끝에 문자를 첨가하고, false이면 기존 문자위에 겹쳐 출력

16 14.4 문자 스트림 (4) FileWriter 클래스와 FileReader 클래스
InputStreamReader 클래스로부터 상속된 클래스 파일로부터 문자를 입력 받을 수 있는 기능을 제공 생성자 FileReader(String filepath) FileReader(File fileObj) filepath : 파일의 이름(경로 포함) fileObj : 특정 파일을 지정하고 있는 File 객체

17 14.4 문자 스트림 (4) FileWriter 클래스와 FileReader 클래스
예제

18 14.4 문자 스트림 (5) BufferedWriter 클래스와 BufferedReader 클래스
문자 스트림의 출력 시 버퍼를 사용 생성자 BufferedWriter(Writer outputStream) BufferedWriter(Writer outputStream, int bufSize) outputStream : Writer 타입의 객체로서 출력 스트림을 의미 bufSize : 버퍼의 크기를 지정. 지정하지 않으면 묵시적인 크기의 버퍼 사용 메소드 void newLine() throws IOException // 새로운 라인에 출력

19 14.4 문자 스트림 (5) BufferedWriter 클래스와 BufferedReader 클래스
문자 스트림의 입력 시 버퍼를 사용 생성자 BufferedReader(Reader inputStream) BufferedReader(Reader inputStream, int bufSize) inputStream : Reader 타입의 객체로서 입력 스트림을 의미 bufSize : 버퍼의 크기를 지정 메소드 void readLine() throws IOException // 한 라인을 읽어 온다

20 14.4 문자 스트림 (5) BufferedWriter 클래스와 BufferedReader 클래스
예제

21 14.4 문자 스트림 (6) PrintWriter 클래스
기본 자료형이나 객체에 해당하는 문자열을 출력하는 기능을 제공 생성자 PrintWriter(OutputStream outputStream) PrintWriter(OutputStream outputStream, boolean flushOnNewline) PrintWriter(Writer outputStream) PrintWriter(Writer outputStream, boolean flushOnNewline) outputStream : 바이트 스트림 타입(OutputStream) 또는 문자 스트림 타입(Writer) 의 출력 스트림을 의미 flushOnNewline : 라인이 바뀔 때마다 버퍼의 모든 내용을 출력시킬 것인지를 지정. flushOnNewline이 true로 지정되면 라인이 바뀔 때 마다 버퍼의 모든 내용이 출력 메소드 : print()와 println() 메소드를 제공. 이 메소드는 모든 자바의 기본 자료형이나 객체 등을 출력할 수 있다

22 14.4 문자 스트림 (6) PrintWriter 클래스
예제

23 14.5 바이트 스트림 바이트 단위의 입출력 바이트 스트림과 연관된 클래스 FileInputStream
InputStream BufferedInputStream FilterInputStream DataInputStream Object FileOutputStream OutputStream BufferedOutputStream FilterOutputStream DataOutputStream PrintStream

24 14.5 바이트 스트림 - (1) OutputStream 클래스와 InputStream 클래스
바이트 스트림의 입출력에 필요로 되는 다양한 메소드를 제공하는 추상 클래스 OutputStream 클래스 : 바이트 스트림을 출력하는 기능 OutputStream 클래스의 주요 메소드 void close() throws IOException 출력 스트림을 닫는다 void flush() throws IOException 버퍼에 남아 있는 출력 스트림을 모두 출력 void write(int i) throws IOException 정수 i의 하위 8비트를 출력 void write(byte buffer[]) buffer의 내용을 출력 throws IOException

25 14.5 바이트 스트림 - (2) FileOutputStream 클래스와 FileInputStream 클래스
파일에 바이트 스트림을 입출력하는 기능을 제공 FileOutputStream 클래스 OutputStream 클래스로부터 상속된 클래스 바이트 스트림을 파일에 출력하는 기능을 제공 생성자 FileOutputStream(String filepath) throws IOException FileOutputStream(String filepath, boolean append) throws IOException FileOutputStream(File fileObj) throws IOException filepath : 파일의 경로명을 포함한 이름 fileObj : 특정 파일을 묘사하고 있는 File 객체 append : append가 true이면 파일의 끝에 문자를 첨가하고, false이면 기존 문자위에 겹쳐 쓴다

26 14.5 바이트 스트림 - (2) FileOutputStream 클래스와 FileInputStream 클래스
바이트 스트림을 파일로부터 입력하는 기능을 제공 생성자 FileInputStream(String filepath) throws FileNotFoundException FileInputStream(File fileObj) throws FileNotFoundException filepath : 파일의 경로명을 포함한 이름 fileObj : 특정 파일을 묘사하고 있는 File 객체

27 14.5 바이트 스트림 - (2) FileOutputStream 클래스와 FileInputStream 클래스
예제

28 14.5 바이트 스트림 - (3) FilterOutputStream 클래스와 FilterInputStream 클래스
필터를 사용하여 원하는 정보만 출력시켜주는 기능을 제공 생성자 FilterOutputStream(OutputStream outputStream) outputStream : 필터링되어 출력될 스트림을 의미 FilterInputStream 클래스 InputStream 클래스로부터 상속된 클래스 필터를 사용하여 원하는 정보만 입력할 수 있는 기능을 제공 FilterInputStream(InputStream inputStream) inputStream : 필터링되어 입력될 스트림을 의미 일반적으로 필터를 사용하기 위해서는 이 클래스들을 이용하지 않고, 이 클래스의 하위 클래스들을 사용한다

29 14.5 바이트 스트림 - (4) BufferedOutputStream 클래스와 BufferedInputStream 클래스
이 두개의 클래스는 FilterOutputStream, FilterInputStream 클래스로부터 상속된 클래스이다 BufferedOutputStream 클래스 버퍼를 사용하여 스트림을 출력 생성자 BufferedOutputStream(OutputStream outputStream) BufferedOutputStream(OutputStream outputStream, int bufSize) BufferedInputStream 클래스 버퍼를 사용하여 스트림을 입력 BufferedInputStream(InputStream inputStream) BufferedInputStream(InputStream inputStream, int bufSize)

30 14.5 바이트 스트림 - (4) BufferedOutputStream 클래스와 BufferedInputStream 클래스
예제

31 14.5 바이트 스트림 - (5) DataOutputStream 클래스와 DataInputStream 클래스
이 클래스들은 자바의 기본 자료형 데이터를 바이트 스트림으로 입출력하는 기능을 제공 DataOutputStream FilterOutputStream 클래스로부터 상속되었고, DataOutput 인터페이스를 사용한 클래스 기본 자료형 데이터를 바이트 스트림으로 출력 생성자 DataOutputStream(OutputStream outputStream) DataInputStream FilterInputStream 클래스로부터 상속되었고, DataInput 인터페이스를 사용한 클래스 바이트 스트림으로부터 자바의 기본 자료형 데이터를 입력 DataInputStream(InputStream inputStream)

32 14.5 바이트 스트림 - (5) DataOutputStream 클래스와 DataInputStream 클래스
void write(int i) throws IOException i를 스트림으로 출력 void write(byte buffer[]) throws IOException buffer를 스트림으로 출력 void write(byte buffer[], int index, int size) buffer의 index위치부터 size 만큼의 throws IOException 바이트를 스트림으로 출력 void writeBoolean(boolean b) b를 스트림으로 출력 throws IOException void writeByte(int i) throws IOException i의 하위 8비트를 스트림으로 출력 void writeBytes(String s) throws IOException 문자열 s를 스트림으로 출력 void writeChar(int i) throws IOException i의 하위 16비트를 스트림으로 출력 void writeChars(String s) throws IOException 문자열 s를 스트림으로 출력 void writeDouble(double d) throws IOException d를 스트림으로 출력 void writeFloat(float f) throws IOException f를 스트림으로 출력 void writeInt(int i) throws IOException i를 스트림으로 출력 void writeLong(long l) throws IOException l을 스트림으로 출력 void writeShort(short s) throws IOException s를 스트림으로 출력 void writeUTF(String s) throws IOException s를 스트림으로 출력. 유니코드를 UTF-8 엔코딩을 이용하여 변환

33 14.5 바이트 스트림 - (5) DataOutputStream 클래스와 DataInputStream 클래스
boolean readBoolean(boolean b) 스트림으로부터 읽은 boolean을 반환 throws IOException byte readByte() throws IOException 스트림으로부터 읽은 byte를 반환 char readChar() throws IOException 스트림으로부터 읽은 char를 반환 double readDouble() throws IOExceptio 스트림으로부터 읽은 double을 반환 float readFloat() throws IOException 스트림으로부터 읽은 float를 반환 long readLong() throws IOException 스트림으로부터 읽은 long을 반환 short readShort() throws IOException 스트림으로부터 읽은 short를 반환 int readInt() throws IOException 스트림으로부터 읽은 int를 반환 void readFully(byte buffer[]) 스트림으로부터 buffer 크기 만큼의 바이트를 읽어 throws IOException buffer 배열에 저장 void readfully(byte buffer[] 스트림으로부터 size 만큼의 바이트를 읽어 buffer의 int index, int size) throws IOException index 위치에 저장 int readUnsignedByte() throws IOException 스트림으로부터 읽은 unsigned byte를 반환 int readUnsignedShort() throws IOException 스트림으로부터 읽은 unsigned short를 반환 int skipBytes(int n) 입력 스트림으로부터 n 바이트를 스킵

34 14.5 바이트 스트림 - (6) PrintStream 클래스
FilterOutputStream 클래스로부터 상속된 클래스 모든 형식의 데이터를 출력하는 기능을 제공 System.out.println문장의 System.out(클래스 변수)은 항상 PrintStream 클래스로부터 생성된 객체를 참조한다 생성자 PrintStream(OutputStream outputStream) PrintStream(OutputStream outputStream, boolean flushOnNewline) outputStream : 바이트 스트림 타입(OutputStream)의 출력 스트림을 의미 flushOnNewline : 라인이 바뀔 때마다 버퍼의 모든 내용을 출력시킬 것인지를 지정한다. flushOnNewline이 true로 지정되면 라인이 바뀔 때마다 버퍼의 모든 내용이 출력

35 14.6 RandomAccessFile 클래스 스트림은 모든 입출력을 순차적으로 수행
DataInput, DataOutput 인터페이스를 사용(포함) - 인터페이스에 선언된 모든 메소드가 구현되어 있으므로 사용가능

36 14.6 RandomAccessFile 클래스 RandomAccessFile 클래스 주요 메소드
void close() 파일을 닫는다 long getFilePointer() 파일 포인터의 위치를 반환. 파일 포인터는 현재 읽거나 쓰고 있는 파일내의 위치를 의미한다. long length() 파일에 있는 바이트의 수를 반환 int read() 파일로부터 한 바이트를 읽는다 int read(byte buffer[]) 파일로부터 buffer[] 배열만큼의 바이트를 읽어 배열에 저장하고 읽은 바이트 수를 반환 int read(byte buffer[], 파일로부터 size 만큼의 바이트를 읽어 buffer[] 배열의 int index, int size) index 위치에 저장하고 읽은 바이트 수를 반환 int skipBytes(int n) 파일 포인터를 n 만큼 이동. n이 음수일 경우 앞으로 이동. 스킵된 바이트 수를 반환 void seek(long n) 파일 포인터를 파일의 처음에서부터 n 바이트만큼 이동시킨다

37 14.7 StreamTokenizer 클래스 문자 스트림으로부터 토큰(token)을 생성하는 기능을 제공 생성자
StreamTokenizer(Reader r) r : Reader 객체를 의미 이 클래스는 4개의 상수를 제공한다. TT_EOF 파일의 끝 TT_EOL 한 라인의 끝 TT_NUMBER 읽은 숫자 TT_WORD 읽은 단어(문자열) StreamTokenizer 클래스로부터 생성된 객체는 공용(public) 객체 속성변수로 nval, sval, ttype를 사용할 수 있다 nval : 읽은 토큰의 값이 숫자일 때 저장 sval : 읽은 토근의 값이 단어(문자열)일 때 저장 ttype : 읽은 토근이 값이 숫자도 아니고 단어도 아니면 ttype에 저장

38 14.7 StreamTokenizer 클래스 StreamTokenizer 클래스의 주요 메소드
void commentChar(int ch) ch가 주석문(한 라인)의 시작 문자임을 알린다 void eollsSignificant(boolean flag) flag가 true이면 end-of-line을 토큰으로 취급하고, false이면 공백으로 취급한다 int lineno() 현재의 라인 번호를 반환 void lowerCaseMode(boolean flag) flag가 true이면 모든 토큰이 자동으로 소문자로 취급된다 int nextToken() 다음 토큰이 숫자이면 TT-NUMBER가 반환되고 단어이면 TT_WORD가 반환되고, 그 외의 경우에는 해당 문자가 반환 void parseNumbers() 현재 객체의 숫자를 파싱한다 void ordinaryChar(int ch) ch가 정규 문자로 지정 void quoteChar(int ch) ch를 quote문자로 설정 void resetSyntax() 모든 문자를 정규문자로 취급 void slashSlashComments(boolean flag) flag가 true이면 // 주석문이 무시된다 void slashStarComments(boolean flag) flag가 true이면 / 주석문이 무시된다 String toString() 현재의 토큰과 같은 문자열을 반환 void whitespaceChars(int c1, int c2) c1-c2 사이의 모든 문자를 공백으로 취급 void wordChars(int c1, int c2) c1-c2 사이의 모든 문자를 단어로 취급

39 14.7 StreamTokenizer 클래스 예제


Download ppt "14.3 문자(character) 스트림과 바이트(byte) 스트림"

Similar presentations


Ads by Google