7. file i/o programming

32
High level GUI Programmin g (1) 1 7. File I/O Programming 스스스 - 프프프프프 프프프프프 “프프프프프 프프프프 프프”프 프프 - 프프 프프프프프프프 프프프프 프프프프 프프 프프프프 프프프 프프 - 스스스스스 ; 프프프프프프 프프프프 프프프 - 스스스스스 ; 프프프프프프 프프프 프프프 프프프 - 스스스스스 ; 프프프 프프프 프 프프 프프프 프프프 프프프 (Writer, Reader class) - 스스스스스스 ; 프프프 프프프 프 프 프프프 프프프프프프 프프프 프 프프 프프프프 프프프 프프프 (InputStream, OutputStream class)

Upload: hakeem-campbell

Post on 30-Dec-2015

34 views

Category:

Documents


2 download

DESCRIPTION

7. File I/O Programming. 스트림 - 프로그래밍 관점에서는 “ 일차원적인 데이터의 흐름 ” 을 의미 - 자바 프로그램에서는 입력되고 출력되는 모든 데이터를 스트림 형태 - 입력스트림 ; 프로그램으로 들어오는 스트림 - 출력스트림 ; 프로그램에서 밖으로 나가는 스트림 - 문자스트림 ; 사람이 이해할 수 있는 문자로 구성된 스트림 (Writer, Reader class) - 바이트스트림 ; 사람이 보아서 알 수 없지만 프로그램에서 사용할 수 있는 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 7. File I/O Programming

High level GUI Programming (1)

1

7. File I/O Programming

스트림- 프로그래밍 관점에서는 “일차원적인 데이터의 흐름”을 의미

- 자바 프로그램에서는 입력되고 출력되는 모든 데이터를 스트림 형태

- 입력스트림 ; 프로그램으로 들어오는 스트림

- 출력스트림 ; 프로그램에서 밖으로 나가는 스트림

- 문자스트림 ; 사람이 이해할 수 있는 문자로 구성된 스트림

(Writer, Reader class)

- 바이트스트림 ; 사람이 보아서 알 수 없지만 프로그램에서 사용할 수 있는

데이터로 구성된 스트림

(InputStream, OutputStream class)

Page 2: 7. File I/O Programming

High level GUI Programming (1)

2

Java io Interface

(1) DataInput()

- 바이트 정보를 읽어서 다른 타입의 정보로 변환하는 입력 스트림을

위한 인터페이스

(2) DataOutput()

- 자바에서 지원하는 타입 객체를 바이트 스트림으로 변환해 출력할 수

있도록 지원하는 클래스

Java io Class

(1) ByteArrayInputStream

- 바이트 형 정보의 입력 스트림을 구현한 클래스

(2) ByteArrayOutputStream

- 바이트 형 정보의 출력 스트림을 구현한 클래스

Page 3: 7. File I/O Programming

High level GUI Programming (1)

3

(3) DataInputStream

- 바이트 정보를 읽어서 다른 타입의 정보로 변환할 수 있도록 만든 입력

스트림 클래스

(4) DataOutputStream

- 자바에서 지원하는 타입 객체를 바이트 스트림으로 변환해 출력할 수

있도록 만든 출력 스트림 클래스

(5) InputStream

- 입력 스트림들이 상속받아야 할 추상 클래스

(6) OutputStream

- 출력 스트림들이 상속받아야 할 추상 클래스

(7) InputStreamReader

- 바이트 입력 스트림을 문자 스트림으로 변환해주는 클래스

Page 4: 7. File I/O Programming

High level GUI Programming (1)

4

(8) OutputStreamWriter

- 유니코드로 된 내부 문자열을 KSC5601 과 같은 형식의 문자열로 변환

하여 출력하는 출력 스트림

(9) PrintStream

- 다른 출력 스트림에 새로운 라인 값을 덧붙여 출력하기 등 출력에 대한

여러 부가적인 기능을 덧붙이는 출력 스트림

(10) Reader

- 바이트 입력 스트림을 문자 스트림으로 변환해 주는 클래스를 위한

추상 클래스

(11) Writer

- 유니코드로 된 내부 문자열을 KSC5601 과 같은 형식의 문자열로 변환

하여 출력하는 출력 스트림의 추상 클래스

- KSC5601 코드 : 한글 완성형코드 (http://www.unicode.org 참조 )

Page 5: 7. File I/O Programming

High level GUI Programming (1)

5

Java io Exception

(1) EOFException

- 입력 스트림에서 더 이상 읽을 정보가 없을 때 발생하는 exception

(2) InterruptedIOException

- 입출력 동작이 쓰레드의 갑작스런 종료 등과 같은 이유로 중단되었을때 발생하는 exception

(3) IOException

- 입출력 동작에서 오류가 발생했을 때 발생하는 exception

(4) UnavailableException

- 리소스를 얻을 수 없을 때 발생하는 exception

(5) UnsupportedEncodingException

- 바이트를 문자로 변환하거나 문자를 바이트로 변환할 때 사용하는디코딩이나 인코딩 방식을 VM 이 지원하지 않을 때 발생

(6) UTFDataFormatException

- UTF8 문자가 형식을 제대로 따르지 않았을 때 발생하는 exception

Page 6: 7. File I/O Programming

High level GUI Programming (1)

6

File 클래스- WIPI 에서 제공하는 파일 클래스 중 하나

- 파일에 대한 읽기 / 쓰기와 같은 기본적인 기능과 Stream 기능 지원을 위한

클래스로서 파일을 생성하고 관리하는 역할

파일에 접근하기 위한 3 가지 접근권한 (flag)

(1) FileSystem.PRIVATE_ACCESS ( 플래그 값 : 1)

- 응용프로그램 자신만이 접근할 수 있는 디렉터리를 접근하고자 할 때

쓰는 플래그

(2) FileSystem.SHARED_ACCESS ( 플래그 값 : 2)

- 공유할 수 있는 디렉터리를 접근하고자 할 때는 쓰는 플래그

(3) FileSystem.SYSTEM_ACCESS ( 플래그 값 : 3)

- 시스템 응용프로그램이 사용하는 디렉터리를 접근하고 할 때 쓰는

플래그

Page 7: 7. File I/O Programming

High level GUI Programming (1)

7

파일모드 (mode)

(1) READ_ONLY ( 상수 : 1)

- 파일을 읽기만 할 목적으로 연다 . 입력 스트림은 하나만 열 수 있고

출력 스트림은 열지 못함

(2) WRITE_ONLY ( 상수 : 2)

- 파일을 쓰기만 할 목적으로 연다 . 파일이 이미 존재할 경우 파일 제일

끝부터 쓰게 된

(3) WRITE_TRUNC ( 상수 : 3)

- 파일을 쓰기만 할 목적으로 연다 . 파일이 이미 존재할 경우 내용은

모두 지워지고 파일의 처음부터 새로 쓰기 시작함

(4) READ_WRITE ( 상수 : 4)

- 파일의 읽기와 쓰기를 동시에 할 목적으로 연다 .

Page 8: 7. File I/O Programming

High level GUI Programming (1)

8

File 클래스 생성자

(1) File(String filename, int mode)

- 응용프로그램 자신만의 디렉터리에 지정된 파일을 생성

- filename : 열고자 하는 파일의 절대경로

(2) File(String filename, int mode, int flag)

- 접근하려는 권한 (flag) 와 접근의도 (mode) 에 따라 파일 생성

- mode 와 flag 는 앞부분 참조

File 클래스 주요 메소드

(1) public void close( )

- 파일을 닫는다 .

(2) public DataInputStream openDataInputStream( )

- DataInputStream 를 가져온다 .

(3) public DataOutputStream openDataOutputStream( )

- DataOutputStream 을 가져온다 .

Page 9: 7. File I/O Programming

High level GUI Programming (1)

9

(4) public InputStream openInputStream( )

- InputStream 을 가져온다 .

(5) public OutputStream openOutputStream( )

- OutputStream 을 가져온다 .

(6) public int read(byte[] buf)

- input stream 으로부터 데이터를 읽어 들인다 .

(7) public int read(byte[] buf, int off, int len)

- input stream 으로부터 데이터를 len 바이트 수만큼 읽어 들인다 .

(8) public void seek(int pos)

- 파일 포인터를 특정 위치로 옮긴다 .

(9) public int sizeOf( )

- 파일의 크기를 알려준다 .

(10) public int write(byte[] buf)

- 파일의 buf 에 들어 있는 데이터를 buf 의 길이만큼 쓴다 .

Page 10: 7. File I/O Programming

High level GUI Programming (1)

10

(11) public int write(byte[] buf, int off, int len)

- 파일의 buf 에 들어 있는 데이터를 off 부터 시작해서 len 만큼 쓴다 .

(12) public int write(int b)

- 파일에 한 바이트만 쓸 때 사용한다 .

Page 11: 7. File I/O Programming

High level GUI Programming (1)

11

Page 12: 7. File I/O Programming

High level GUI Programming (1)

12

Page 13: 7. File I/O Programming

High level GUI Programming (1)

13

- 파일은 C:\W\pri 디렉터리 참조

Page 14: 7. File I/O Programming

High level GUI Programming (1)

14

Page 15: 7. File I/O Programming

High level GUI Programming (1)

15

FileSystem 클래스

- 파일의 생성 , 삭제 , 변경 등을 관리해주는 클래스로서 인스턴스 없이 static

으로 바로 사용가능하나 모든 파일 또는 디렉터리 경로는 모두 절대적인

경로로 설정해야 함 ( 사용자가 임의로 변경 불가 )

FileSystem 주요 메소드

(1) public static int available( )

- 응용프로그램이 사용할 수 있는 공간이 얼마나 남았는지 알려줌

(2) public static boolean exists(String name)

- 응용프로그램 자신만의 디렉터리의 파일 , 디렉터리가 존재하는지를

확인

(3) public static boolean exists(String name, int flag)

- 지정된 디렉터리 아래 파일이나 디렉터리가 존재하는지를 확인

(4) public static int getCreationTime(String name)

- 응용프로그램 자신만의 디렉터리에 있는 파일의 생성시간을 알려줌

Page 16: 7. File I/O Programming

High level GUI Programming (1)

16

(5) public static int getCreationTime(String name, int flag)

- 파일의 생성 시간을 알려줌

(6) public static int getMaxFilenameLength( )

- 사용할 수 있는 파일이름의 최대길이를 확인

(7) public static boolean isDirectory(String name)

- 응용프로그램 자신만의 디렉터리에 있는 디렉터리인지를 확인

(8) public static boolean isDirectory(String name, int flag)

- 디렉터리인지를 확인

(9) public static boolean isFile(String name)

- 응용프로그램 자신만의 디렉터리에 지정된 이름의 파일이 존재하는지

확인

(10) public static boolean isFile(String name, int flag)

- 지정된 이름의 파일이 존재하는지 확인

Page 17: 7. File I/O Programming

High level GUI Programming (1)

17

(11) public static Vector list(String dirname)

- 응용프로그램 자신만의 디렉터리 안에 있는 파일과 디렉터리를 모두

보여줌

(12) public static Vector list(String dirname, int flg)

- 지정된 디렉터리 안에 있는 파일과 디렉터리를 모두 보여줌

(13) public static void mkdir(String dirname)

- 응용프로그램 자신만의 디렉터리에 디렉터리를 만듦

(14) public static void mkdir(String dirname, int flag)

- 디렉터리를 만듦

(15) public static void remove(String filename)

- 응용프로그램 자신만의 디렉터리의 파일을 지움

(16) public static void remove(String filename, int flag)

- 파일을 지움

Page 18: 7. File I/O Programming

High level GUI Programming (1)

18

(17) public static void rename(String oldName, String newName)

- 응용프로그램 자신만의 디렉터리 내에 있는 파일의 이름을 변경

(18) public static void rename(String oldName, String newName, int flag)

- 파일 이름을 변경

(19) public static void rmdir(String dirname)

- 응용프로그램 자신만의 디렉터리에 있는 디렉터리를 지움

(20) public static void rmdir(String dirname, int flag)

- 디렉터리를 지움

(21) public static byte[] toCString(String iStr)

- Java String 을 C String 으로 변경

(22) public static int totalSpace( )

- 하드웨어의 디스크 공간을 알려줌

< 참고 >

- 파라미터에 flag 가 없는 것은 PRIVATE_ACCESS 이거나 필요 없는 경우

Page 19: 7. File I/O Programming

High level GUI Programming (1)

19

Page 20: 7. File I/O Programming

High level GUI Programming (1)

20

Page 21: 7. File I/O Programming

High level GUI Programming (1)

21

Page 22: 7. File I/O Programming

High level GUI Programming (1)

22

Page 23: 7. File I/O Programming

High level GUI Programming (1)

23

Page 24: 7. File I/O Programming

High level GUI Programming (1)

24

Page 25: 7. File I/O Programming

High level GUI Programming (1)

25

Page 26: 7. File I/O Programming

High level GUI Programming (1)

26

Page 27: 7. File I/O Programming

High level GUI Programming (1)

27

Page 28: 7. File I/O Programming

High level GUI Programming (1)

28

Page 29: 7. File I/O Programming

High level GUI Programming (1)

29

Page 30: 7. File I/O Programming

High level GUI Programming (1)

30

Page 31: 7. File I/O Programming

High level GUI Programming (1)

31

Page 32: 7. File I/O Programming

High level GUI Programming (1)

32