320 likes | 456 Views
7. File I/O Programming. 스트림 - 프로그래밍 관점에서는 “ 일차원적인 데이터의 흐름 ” 을 의미 - 자바 프로그램에서는 입력되고 출력되는 모든 데이터를 스트림 형태 - 입력스트림 ; 프로그램으로 들어오는 스트림 - 출력스트림 ; 프로그램에서 밖으로 나가는 스트림 - 문자스트림 ; 사람이 이해할 수 있는 문자로 구성된 스트림 (Writer, Reader class) - 바이트스트림 ; 사람이 보아서 알 수 없지만 프로그램에서 사용할 수 있는
E N D
7. File I/O Programming • 스트림 - 프로그래밍 관점에서는 “일차원적인 데이터의 흐름”을 의미 - 자바 프로그램에서는 입력되고 출력되는 모든 데이터를 스트림 형태 - 입력스트림; 프로그램으로 들어오는 스트림 - 출력스트림; 프로그램에서 밖으로 나가는 스트림 - 문자스트림; 사람이 이해할 수 있는 문자로 구성된 스트림 (Writer, Reader class) - 바이트스트림; 사람이 보아서 알 수 없지만 프로그램에서 사용할 수 있는 데이터로 구성된 스트림 (InputStream, OutputStream class) High level GUI Programming (1)
Java io Interface (1) DataInput() - 바이트 정보를 읽어서 다른 타입의 정보로 변환하는 입력 스트림을 위한 인터페이스 (2) DataOutput() - 자바에서 지원하는 타입 객체를 바이트 스트림으로 변환해 출력할 수 있도록 지원하는 클래스 • Java io Class (1) ByteArrayInputStream - 바이트 형 정보의 입력 스트림을 구현한 클래스 (2) ByteArrayOutputStream - 바이트 형 정보의 출력 스트림을 구현한 클래스 High level GUI Programming (1)
(3) DataInputStream - 바이트 정보를 읽어서 다른 타입의 정보로 변환할 수 있도록 만든 입력 스트림 클래스 (4) DataOutputStream - 자바에서 지원하는 타입 객체를 바이트 스트림으로 변환해 출력할 수 있도록 만든 출력 스트림 클래스 (5) InputStream - 입력 스트림들이 상속받아야 할 추상 클래스 (6) OutputStream - 출력 스트림들이 상속받아야 할 추상 클래스 (7) InputStreamReader - 바이트 입력 스트림을 문자 스트림으로 변환해주는 클래스 High level GUI Programming (1)
(8) OutputStreamWriter - 유니코드로 된 내부 문자열을 KSC5601과 같은 형식의 문자열로 변환 하여 출력하는 출력 스트림 (9) PrintStream - 다른 출력 스트림에 새로운 라인 값을 덧붙여 출력하기 등 출력에 대한 여러 부가적인 기능을 덧붙이는 출력 스트림 (10) Reader - 바이트 입력 스트림을 문자 스트림으로 변환해 주는 클래스를 위한 추상 클래스 (11) Writer - 유니코드로 된 내부 문자열을 KSC5601과 같은 형식의 문자열로 변환 하여 출력하는 출력 스트림의 추상 클래스 - KSC5601 코드 : 한글 완성형코드 (http://www.unicode.org참조) High level GUI Programming (1)
Java io Exception (1) EOFException - 입력 스트림에서 더 이상 읽을 정보가 없을 때 발생하는 exception (2) InterruptedIOException - 입출력 동작이 쓰레드의 갑작스런 종료 등과 같은 이유로 중단되었을 때 발생하는 exception (3) IOException - 입출력 동작에서 오류가 발생했을 때 발생하는 exception (4) UnavailableException - 리소스를 얻을 수 없을 때 발생하는 exception (5) UnsupportedEncodingException - 바이트를 문자로 변환하거나 문자를 바이트로 변환할 때 사용하는 디코딩이나 인코딩 방식을 VM이 지원하지 않을 때 발생 (6) UTFDataFormatException - UTF8 문자가 형식을 제대로 따르지 않았을 때 발생하는 exception High level GUI Programming (1)
File 클래스 - WIPI에서 제공하는 파일 클래스 중 하나 - 파일에 대한 읽기/쓰기와 같은 기본적인 기능과 Stream 기능 지원을 위한 클래스로서 파일을 생성하고 관리하는 역할 파일에 접근하기 위한 3가지 접근권한 (flag) (1) FileSystem.PRIVATE_ACCESS (플래그 값 : 1) - 응용프로그램 자신만이 접근할 수 있는 디렉터리를 접근하고자 할 때 쓰는 플래그 (2) FileSystem.SHARED_ACCESS (플래그 값 : 2) - 공유할 수 있는 디렉터리를 접근하고자 할 때는 쓰는 플래그 (3) FileSystem.SYSTEM_ACCESS (플래그 값 : 3) - 시스템 응용프로그램이 사용하는 디렉터리를 접근하고 할 때 쓰는 플래그 High level GUI Programming (1)
파일모드 (mode) (1) READ_ONLY (상수 : 1) - 파일을 읽기만 할 목적으로 연다. 입력 스트림은 하나만 열 수 있고 출력 스트림은 열지 못함 (2) WRITE_ONLY (상수 : 2) - 파일을 쓰기만 할 목적으로 연다. 파일이 이미 존재할 경우 파일 제일 끝부터 쓰게 된 (3) WRITE_TRUNC (상수 : 3) - 파일을 쓰기만 할 목적으로 연다. 파일이 이미 존재할 경우 내용은 모두 지워지고 파일의 처음부터 새로 쓰기 시작함 (4) READ_WRITE (상수 : 4) - 파일의 읽기와 쓰기를 동시에 할 목적으로 연다. High level GUI Programming (1)
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을 가져온다. High level GUI Programming (1)
(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의 길이만큼 쓴다. High level GUI Programming (1)
(11) public int write(byte[] buf, int off, int len) - 파일의 buf에 들어 있는 데이터를 off부터 시작해서 len만큼 쓴다. (12) public int write(int b) - 파일에 한 바이트만 쓸 때 사용한다. High level GUI Programming (1)
- 파일은 C:\W\pri 디렉터리 참조 High level GUI Programming (1)
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) - 응용프로그램 자신만의 디렉터리에 있는 파일의 생성시간을 알려줌 High level GUI Programming (1)
(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) - 지정된 이름의 파일이 존재하는지 확인 High level GUI Programming (1)
(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) - 파일을 지움 High level GUI Programming (1)
(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이거나 필요 없는 경우 High level GUI Programming (1)