1 / 63

12 장 . 입출력

12 장 . 입출력. Java. public class SumTest { public static void main(String a1[]) { int a, b, sum; a = Integer.parseInt (a1[0]); b = Integer.parseInt (a1[1]); sum = a + b ; // 두 수를 더하는 부분입니다 System.out.println (" 두수의 합은 " + sum + " 입니다 "); } }.

talor
Download Presentation

12 장 . 입출력

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 12장. 입출력 Java public class SumTest { public static void main(String a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두 수를 더하는 부분입니다 System.out.println("두수의 합은 " + sum + "입니다"); } }

  2. 학습목표

  3. 목차 • section 1 java.io 패키지 개요 • section 2 파일과 디렉터리 • section 3 문자(Chraracter) 스트림과 바이트(Byte) 스트림 • section 4 문자 스트림 • 4-1 Writer 클래스와 Reader 클래스 • 4-2 FileWriter클래스와 FileReader클래스 • section 5 바이트 스트림 • 5-1 OutputStream클래스와 InputStream클래스 • 5-2 FileOutputStream클래스와 FileInputStream클래스 • 5-3 DataOutputStream클래스와 DataInputStream클래스 • 5-4 OjbectOutputStream클래스와 OjbectInputStream클래스

  4. 1 java.io 패키지 개요 • 입출력 기능 • 프로그램에서 사용된 데이터를 영구적으로 저장하여 후에 다른 프로그램에서 사용하게 하기 위해 필요한 기능 • 프로그램에서 생성된 데이터를 파일 형태로 컴퓨터의 하드디스크나 보조 기억장치에 저장한 다음 다른 프로그램에서 이 데이터를 읽어 사용하는 기능 • 스트림 • 순서가 있는 일련의 데이터를 의미하는 추상적인 개념

  5. 1 java.io 패키지 개요 • 스트림을 통한 입출력의 예 395 page

  6. 1 java.io 패키지 개요 • java.io 패키지의 클래스 계층 구조 396 page

  7. 2 파일과 디렉터리 • File 클래스 • 자바는 입출력을 위해 필요한 파일과 디렉터리를 다루기 위해 File 클래스를 제공 • File 클래스의 생성자 파일의 경로만 가진 객체 경로명과 파일 이름을 가진 객체 경로명을 가진 File 객체와 파일 이름을 가진 객체 File(String directoryPath) File(String directoryPath, String filename) File(File dirObj, String filename) 형식

  8. 2 파일과 디렉터리 • File 클래스의 주요 메소드

  9. 2 파일과 디렉터리 • File 클래스의 주요 메소드

  10. 2 파일과 디렉터리 • 실습예제 “C:/Windows”를 경로로 File 객체 생성 각 요소를 File 객체로 생성 디렉터리인지, 파일인지를 판별 디렉터리에 있는 모든 요소를 문자열 배열로 생성

  11. 2 파일과 디렉터리 • 실습예제 • 프로그램 설명 • 05 : “C:/Windows” 디렉터리를 가지고 File 객체를 생성한다. • 09 : list() 메소드는 현재 File 객체가 가지고 있는 디렉터리의 모든 요소(디렉터리 또는 파일)들을 String 객체의 배열로 반환하는 메소드이다. • 11 : “C:/Windows” 디렉터리에 있는 각 요소들을 가지고 File 객체를 생성한다.  • 12 : 각 요소에 대해 디렉터리인지를 검사하여 출력한다.

  12. 2 파일과 디렉터리

  13. 2 파일과 디렉터리 • 실습예제 “C:/log.txt”로 File 객체 생성 파일의 이름을 출력

  14. 2 파일과 디렉터리 • 프로그램 설명 • 04 : “C:/log.txt”로 File 객체를 생성하였다. • 05~17 : File 클래스의 다양한 메소드를 사용하고 있다. lastModified() 메소드는 파일이 마지막으로 수정된 날짜를 밀리초로 반환한다. 반환된 밀리초는1970년 1월 1일부터 파일이 마지막으로 수정된 날짜까지의 밀리초이다.

  15. 3 문자(Chraracter) 스트림과 바이트(Byte) 스트림 • 문자 스트림 • 16비트 문자나 문자열들을 읽고 쓰기 위한 스트림 • 입출력을 위해서는 Reader, Writer 클래스와 그 하위 클래스를 이용 • 바이트 스트림(또는 바이너리 스트림) • 8비트의 바이트를 읽고 쓰기 위한 스트림 • 입출력을 위해서는 InputStream, OutputStream클래스와 그 하위 클래스를 이용

  16. 4 문자 스트림 • 문자 스트림과 연관된 클래스 403 page

  17. 4 문자 스트림 4-1 Writer 클래스와 Reader 클래스 • Writer 클래스 • 문자 스트림의 출력 기능을 제공 • Reader 클래스 • 문자 스트림의 입력 기능을 제공

  18. 4 문자 스트림 4-1 Writer 클래스와 Reader 클래스 • Writer 클래스의 주요 메소드

  19. 4 문자 스트림 4-1 Writer 클래스와 Reader 클래스 • Reader 클래스의 주요 메소드

  20. 4 문자 스트림 4-1 Writer 클래스와 Reader 클래스 • [예외를 호출한 메소드로 넘겨주는 방법] 호출한 메소드에 예외를 넘김

  21. 4 문자 스트림 4-1 Writer 클래스와 Reader 클래스 • [예외를 메소드 내에서 처리하는 방법] 예외 발생 가능 영역 지정 예외 처리 루틴 작성

  22. 4 문자 스트림 4-2 FileWriter클래스와 FileReader클래스 • FileWriter클래스 • OutputStreamWriter클래스로부터 상속된 클래스 • FileWriter클래스의 생성자 • FileReader클래스의 생성자 FileWriter(String filepath) throws IOException FileWriter(String filepath, boolean append) throws IOException FileWriter(File fileObj) throws IOException FileReader(String filepath) FileReader(File fileObj) 형식 형식

  23. 4 문자 스트림 4-2 FileWriter클래스와 FileReader클래스 • FileWriter클래스와 FileReader클래스의 역할 406 page

  24. 4 문자 스트림 4-2 FileWriter클래스와 FileReader클래스 • 실습예제 예외를 처리 출력할 문자열 길이만큼의 문자 배열 생성 문자열을 문자 배열로 변환 FileWriter객체 생성 객체를 통해 문자 배열 내용 출력 파일을 닫는다.

  25. 4 문자 스트림 4-2 FileWriter클래스와 FileReader클래스 • 프로그램 설명 • 03 : throws 절을 이용하여 예외를 처리하였다. 파일을 생성하고 입출력을 수행하기 위해서는 반드시 예외를 처리해 주어야 한다. 예를 들어 출력할 파일을 생성할 수 없다거나, 입력할 파일이 존재하지 않는 경우를 대비하기 위해서이다. • 07 : 출력할 문자열 source 크기에 해당하는 문자 배열 input을 생성하였다.  • 08 : getChars() 메소드는String 클래스에 선언된 메소드이다. 문자열을 문자 배열로 변환하는 메소드이다.  • 10 : FileWriter객체를 생성하고 있다. 매개변수로 받은 파일 이름으로 파일을 생성한다. • 11 : 파일에 input 문자 배열을 출력하고 있다. write() 메소드는오버로딩되어 사용된다. 문자열 source를 직접 write() 메소드를 이용하여 출력할 수도 있다. 즉 5,6번 문장을 삭제하고 fw.write(source)를 이용하여 문자열을 직접 출력할 수 있다. • 12 : 파일을 닫는다. 즉 출력 스트림을 닫는다.

  26. 4 문자 스트림 4-2 FileWriter클래스와 FileReader클래스 • 실습예제 FileReader객체를 생성 파일로부터 하나의 문자를 읽는다 문자로 형변환하여 출력 

  27. 4 문자 스트림 4-2 FileWriter클래스와 FileReader클래스 • 프로그램 설명 • 04 : FileReader클래스로부터 객체를 생성한다. 실행 시 매개변수로 지정된 파일로 객체를 생성한다. 만일 그 파일이 없으면 예외가 발생한다. • 06 : 하나의 문자를 읽어 int형의 변수 i에 저장한다. 자바는 배정 연산(=)을 포함한 모든 연산을 int형으로 수행하므로 int형에 저장하여야 한다. • 07 : i변숫값은int형이므로 그대로 출력하면 연속된 숫자가 출력되게 된다. int형의 변숫값을char형으로 형변환하여 출력하여야 한다.

  28. 5 바이트 스트림 • 바이트 스트림과 연관된 클래스 410 page

  29. 5 바이트 스트림 5-1 OutputStream클래스와 InputStream클래스 • OutputStream클래스 • 바이트 스트림을 출력하는 메소드들을 제공 • InputStream클래스 • 입력으로(키보드, 파일 등)부터 데이터를 읽어오는 메소드를 제공

  30. 5 바이트 스트림 5-1 OutputStream클래스와 InputStream클래스 • OutputStream클래스의 주요 메소드

  31. 5 바이트 스트림 5-1 OutputStream클래스와 InputStream클래스 • InputStream클래스의 주요 메소드

  32. 5 바이트 스트림 5-2 FileOutputStream클래스와 FileInputStream클래스 • FileOutputStream클래스 • OutputStream클래스로부터 상속된 클래스 • 파일에 바이트 스트림을 출력할 수 있는 기능을 제공 • FileOutputStream클래스 생성자 FileOutputStream(String filepath) throws IOException FileOutputStream(String filepath, boolean append) throws IOException FileOutputStream(File fileObj) throws IOException 형식

  33. 5 바이트 스트림 5-2 FileOutputStream클래스와 FileInputStream클래스 • FileInputStream클래스 • InputStream클래스로부터 상속된 클래스 • 파일로부터 입력을 받을 수 있는 기능을 제공 • FileInputStream클래스 생성자 FileInputStream(String filepath) throws FileNotFoundException FileInputStream(File fileObj) throws FileNotFoundException 형식

  34. 5 바이트 스트림 5-2 FileOutputStream클래스와 FileInputStream클래스 • FileOutputStream클래스와 FileInputStream클래스의 역할 412 page

  35. 5 바이트 스트림 5-2 FileOutputStream클래스와 FileInputStream클래스 • 실습예제 FileOutputStream객체 생성 inti의 하위 8비트만 출력

  36. 5 바이트 스트림 5-2 FileOutputStream클래스와 FileInputStream클래스 • 프로그램 설명 • 05 : 실행 시 매개변수로 받은 파일 이름으로 FileOutputStream객체를 생성하였다. • 06 : 반복문에서1~5 사이의 숫자를 write() 메소드를 통해 출력하고 있다. 이 경우 int형의 하위 8비트만 출력된다. 프로그램을 수정하여 1부터 300까지를 반복하여 출력해보면 그 결과를 알 수 있다.

  37. 5 바이트 스트림 5-2 FileOutputStream클래스와 FileInputStream클래스 • 실습예제 FileInputStream객체를 생성 한 바이트를 읽는다.

  38. 5 바이트 스트림 5-2 FileOutputStream클래스와 FileInputStream클래스 • 프로그램 설명 • 00 : 실행 시 매개변수로 받은 파일 이름으로 FileInputStream객체를 생성한다. • 00 : 파일로부터 한 바이트를 읽어들여int형의 변수에 저장한다. • 00 :  int형 변수의 값을 출력한다. 앞의  FileOutputStreamTest.java 프로그램을 수정하여 1~260까지를 저장한 다음 위의 프로그램을 수행시켜보면, 1부터 255까지 출력되고 0, 1, 2, 3, 4 까지 출력됨을 볼 수 있다. 8비트 단위의 입출력이고 입출력된 내용이 int형에 저장되었기 때문에 28-1=255까지 출력됨을 볼 수 있다. 일반적인 byte 단위의 수 표현에서는 가장 왼쪽 비트를 부호비트로 취급하므로 27-1=127 까지만 표현이 가능하다.

  39. 5 바이트 스트림 5-3 DataOutputStream클래스와 DataInputStream클래스 • DataOutputStream클래스 • FilterOutputStream클래스로부터 상속되었고 DataOutput인터페이스를 사용하여 구현된 클래스 • 자바의 기본 자료형 데이터를 바이트 스트림으로 출력하는 기능을 제공 • DataOutputStream클래스 생성자 DataOutputStream(OutputStreamoutputStream) 형식

  40. 5 바이트 스트림 5-3 DataOutputStream클래스와 DataInputStream클래스 • DataOutputStream클래스에 구현된 DataOutput인터페이스의 메소드

  41. 5 바이트 스트림 5-3 DataOutputStream클래스와 DataInputStream클래스 • DataOutputStream클래스와 DataInputStream클래스의 역할 417 page

  42. 5 바이트 스트림 5-3 DataOutputStream클래스와 DataInputStream클래스 • DataInputStream클래스 • FilterInputStream클래스로부터 상속되고 DataInput인터페이스를 사용하여 구현된 클래스 • 바이트 스트림으로부터 자바의 기본 자료형 데이터를 읽는 기능을 제공 • DataInputStream클래스 생성자 DataInputStream(InputStreaminputStream) 형식

  43. 5 바이트 스트림 5-3 DataOutputStream클래스와 DataInputStream클래스 • DataInputStream클래스에 구현된 DataInput인터페이스의 메소드

  44. 5 바이트 스트림 5-3 DataOutputStream클래스와 DataInputStream클래스 • 실습예제 파일에 출력하기 위한 객체 생성 데이터를 파일에 출력하기 위한 객체 생성(파일객체와 연계) 문자를 출력하는 writeChar() 메소드 수행 Byte 클래스에 선언된 상수 MAX_VALUE 사용

  45. 5 바이트 스트림 5-3 DataOutputStream클래스와 DataInputStream클래스 • 프로그램 설명 • 04 : 파일에 출력하기 위해 매개변수로 지정된 값을 가지고 FileOutputStream객체를 생성하였다. • 05 : 파일에 자바의 기본 자료형 데이터를 출력하기 위해 DataOutputStream객체를 생성하는데, 앞에서 생성된 파일 객체를 이용해서 생성한다. 이렇게 생성된 객체는 자바의 기본 자료형 데이터를 파일에 출력할 수 있는 특성을 가지게 된다. • 07~13 : 기본 자료형 클래스에는 MAX_VALUE와 MIN_VALUE라는 상숫값을 가지고 있기 때문에 프로그램에서 자유롭게 사용이 가능하다. • 실행결과 • 위 프로그램은 아무런 결과를 출력하지 않고, 파일만 생성한다. 파일의 내용은 바이트 단위로 저장되므로 파일의 내용을 볼 수 없다.

  46. 5 바이트 스트림 5-3 DataOutputStream클래스와 DataInputStream클래스 • 실습예제 파일 입력을 위한 객체 생성 기본 자료형 입력 객체 생성(파일과 연계) 기본 자료형 데이터를 읽는다.

  47. 5 바이트 스트림 5-3 DataOutputStream클래스와 DataInputStream클래스 • 프로그램 설명 • 04 : 파일로부터 입력받기 위해 매개변수로 지정된 값을 가지고 FileInputStream객체를 생성하였다. • 05 : 파일로부터 자바의 기본 자료형 데이터를 입력받기 위해 DataInputStream객체를 생성하는데, 앞에서 생성된 파일 객체를 이용해서 생성한다. 이렇게 생성된 객체는 자바의 기본 자료형 데이터를 파일로부터 입력할 수 있는 특성을 가지게 된다. • 07~14 : 기본 자료형 데이터를 읽어들인다. 출력한 순서대로 입력하여야 정확한 데이터를 얻을 수 있다. 만일 순서가 틀리게 되면 예상치 않은 데이터가 출력되게 된다.

  48. 5 바이트 스트림 5-3 DataOutputStream클래스와 DataInputStream클래스

  49. 5 바이트 스트림 5-4 OjbectOutputStream클래스와 OjbectInputStream클래스 • 직렬화된 데이터 • 객체를 순차적인 바이트로 표현한 데이터를 의미 • 영속성 • 객체가 자신의 상태를 기록해 두어 다음 기회에 또는 다른 환경에서 재생될 수 있는 능력을 의미

  50. 5 바이트 스트림 5-4 OjbectOutputStream클래스와 OjbectInputStream클래스 • Serializable인터페이스를 포함하는 클래스 Serializable인터페이스를 포함 class Box implements Serializable { int w; int h; int d; } 형식

More Related