8장 자바 입출력.

Slides:



Advertisements
Similar presentations
Transaction ㅇ Transaction 을 직접 구현하려면, 까다로운 설계와 복잡한 코드를 필요로 하고 수정에 공수가 많이 들게 된다. ㅇ 스프링에서 제공하는 Transaction Manager 를 사용하여 쉽고 간편하게 어려운 트랜잭션을 해결할 수 있다. xml.
Advertisements

멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
14. 위피 게임: 가위바위보 게임 초기에 점수=0 처음 이기면 10 점 그 다음부터 이기면 점수=현재 점수*2 지면
네트워크 프로그래밍 및 실습.
입출력 14.1 java.io 패키지의 개요 14.2 파일과 디렉토리
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
10. 예외 처리.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
IntArray[0] int length 5 intArray 객체 제 3 장 반복문, 배열, 예외처리.
제9장 입출력과 JNI.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
어서와 Java는 처음이지! 제4장 배열.
제14장 원격 메소드 호출 김 기 환. 조 명 휘.
명품 JAVA Programming 제 13 장 스레드와 멀티태스킹.
12장. JSP에서 자바빈 활용 제12장.
제 4장 문 장 배정문 혼합문 제어문 표준 입출력.
제 12장 예외 처리 12.1 설계 쟁점 12.2 PL/I의 ON-조건 12.3 Ada의 예외 처리
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
명품 JAVA Programming.
Chapter 11 – 예외 처리 Outline 11.1 설계 쟁점 11.2 Pl/I의 예외 처리 11.3 Ada의 예외 처리
5 익셉션 처리.
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
제7장 제어구조 I – 식과 문장.
음악 재생 프로그램 예외 처리 방법 try/catch 블록 예외 선언 방법
[ 단원 08 ] 예외처리와 스레드.
명품 JAVA Essential.
3 JSP의 기초.
[INA470] Java Programming Youn-Hee Han
Java 12장. 입출력 public class SumTest {
7장 파일과 데이터베이스.
Chapter 14. 입출력 스트림.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
Choi, Namseok Java 기초 (Java의 제어문과 배열) Choi, Namseok
Power Java 제15장 예외 처리 (Exception Handling).
01. 직렬화와 역직렬화에 대하여 객체의 직렬화 직렬화와 역직렬화
AOP 개념 및 Spring의 AOP 기능.
명품 JAVA Programming 제 8 장 입출력 스트림과 파일 입출력.
명품 JAVA Essential.
명품 JAVA Programming 제 16 장 네트워크.
실전 사운드 처리 프로그래밍 Lecture #11.
명품 Java Programming.
최용술 장 Thread 최용술
Chap07 예외 처리 7.1 예외의 개요 7.2 예외 관련 클래스 7.3 예외 처리.
10장 다중 스레드 10.1 스레드 개요 10.2 Thread 클래스 10.3 스레드 생성
Hadoop 김연왕
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
메모장 구동.
주소록 프로그램.
Network Programming(1)
자바 5.0 프로그래밍.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
12장 문자열 12.1 문자열의 개요 12.2 String 클래스 12.3 StringBuffer 클래스.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
Chap10 다중 스레드 Section 1 : 스레드 개요 Section 2 : Thread 클래스와 스레드 생명주기
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
DataScience Lab. 박사과정 김희찬 (월)
컴퓨터공학실습(I) 3주 인공지능연구실.
자바 5.0 프로그래밍.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
자바 5.0 프로그래밍.
C# 10장. 참조형.
6장 클래스(상속).
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
임베디드 프로그래밍 Lecture #
Presentation transcript:

8장 자바 입출력

자바 입출력 File 클래스 입출력 스트림 클래스 예외 final 수정자

자바 입출력 File 클래스 파일이나 디렉토리를 생성, 삭제, 이름 변경 등을 정의해놓은 클래스가 File 클래스임. 메 서 드 설  명 File(String directoryPath) 파일이 존재하는 디렉토리명(파일이름 포함)을 인수로하는 생성자 File(Stirng directoryPath, String filename) 파일이 존재하는 디렉토리명과 파일이름을 인수로 하는 생성자 File(File dirObj, String filename) 파일이 있는 디렉토리의 파일 객체와 파일이름을 인수로하는 생성자

자바 입출력 생성된 File 클래스 객체를 조작하기 위한 중요 메서드. 메 서 드 설 명 boolean canRead() 설  명 boolean canRead() 파일이 읽기 가능하면 TRUE, 아니면 FALSE를 반환 boolean canWrite() 파일이 쓰기 가능하면 TRUE, 아니면 FALSE를 반환 boolean delete() 파일이 삭제하고 TRUE, 삭제 할 수 없으면 FALSE를 반환 boolean equal(Object obj) 두 파일 객체가 같은 파일을 참조하고 있으면 TRUE, 아니면 FALSE를 반환 boolean exists() 파일이 존재하면 TRUE, 아니면 FALSE String getAbsolutePath() 파일에 대한 절대 경로를 반환 String getCannicalPath() 파일에 대한 정규 경로를 반환 String getParent() 부모 디렉토리의 이름을 반환 String getName() 파일의 이름을 반환 String getPath() 파일의 경로를 반환 boolean isAbsolute() 경로가 절대 경로이면 TRUE, 아니면 FALSE 반환 boolean isDirectory() 현재 객체가 디렉토리이면 TURE, 아니면 FALSE 반환 boolean isFile() 현재 객체가 파일이면 TRUE, 아니면 FALSE 반환 long lastModified() 파일이 마지막으로 수정된 시간과 날짜 GMT 시간으로 반환 long length() 파일의 바이트 수를 반환 String[] list() 디렉토리에서 파일의 이름을 반환 boolean mkdir() 디렉토리 생성에 성공하면 TRUE, 실패하면 FALSE 반환. 지정된 모든 경로가 존재해야 한다. boolean mkdirs() 디렉토리 생성에 성공하면 TRUE, 실패하면 FALSE 반환. 지정된 모든 경로가 존재하지 않으면 그 경로의 상위 디렉토리에 생성. boolean renameTo(File newName) 파일이나 디렉토리의 이름을 newName으로 변경하고 TRUE를 반환, 실패하면 FALSE를 반환한다.

자바 입출력 import java.io.*; import java.util.*; class FileExam {     public static void main(String args[]) {         File dir = new File("c:\\test");         File file = new File(dir, “test.txt");         if(dir.isDirectory()) {             System.out.println("File 클래스 객체 dir은 디렉토리입니다.");             String files[] = dir.list();             System.out.println("디렉토리의 파일 목록 : ");             for(int index=0; index < files.length; index++) {                 System.out.println("    "+files[index]);             }         } System.out.println("상위 디렉토리 : " + dir.getParent());         System.out.println("디렉토리의 이름 : " + dir.getName());         System.out.println("디렉토리의 경로 : " + dir.getPath());                 if(file.isFile()) {             System.out.println("File 클래스 객체 file은 파일입니다.");             System.out.println("마지막 수정시간 : "+ new Date(file.lastModified()));             System.out.println("파일의 크기 "+ file.length() + "byte");         System.out.println("상위 디렉토리 : " + file.getParent());         System.out.println("파일의 이름 : " + file.getName());         System.out.println("파일의 경로 : " + file.getPath());     } }      

자바 입출력 실행결과

자바 입출력 자바의 입출력 스트림(stream) 입출력 데이터의 추상적인 표현. 프로그래머가 스트림 객체를 이용하면 실제 하드웨어 장치와 상관없이 일관된 방법으로 입출력을 처리할 수 있기 때문임. 이런 스트림은 키보드, 파일 등의 입력장치로부터 데이터를 읽어 들이는 입력 스트림과 모니터, 파일 등의 출력장치로 데이터를 출력하는 출력 스트림으로 분류 할 수 있음. 문자 스트림과 바이트 스트림으로 분류 할 수 있는데 문자 스트림은 16비트 문자나 문자열들을 읽고 쓰기 위한 스트림이고 바이트 스트림은 8비트의 바이트를 읽고 쓰기 위한 스트림 임.

자바 입출력 자바에서 입출력을 위해 제공하는 스트림 클래스 문자 스트림의 계층 구조도 바이트 스트림의 계층 구조도

자바 입출력 예제 import java.io.*; public class CharStreamExam {     public static void main(String args[]) {         try {             FileReader fr = new FileReader(new File("c:\\test\\file.txt"));             BufferedReader br = new BufferedReader(fr);                        String line = null;             while((line=br.readLine())!= null) {                 System.out.println(line);             }                     }catch(IOException ioe) {}     } }

자바 입출력 바이트 입출력 스트림 클래스는 8비트 단위로 입출력을 하며 텍스트 형태의 데이터뿐만 아니라 이진 데이터를 읽는데도 유용하게 사용할 수 있음. 바이트 입출력 스트림은 8비트 단위로 입출력 함으로 텍스트 형식의 데이터를 입출력 할 때 약간의 주의가 필요함. 아스키코드와 같이 8비트보다 작은 문자 코드로 된 파일을 읽을 때는 문제가 없지만 유니코드와 같은 텍스트 데이터를 읽을 때는 인코딩을 해주어야 올바른 데이터를 화면에 출력할 수 있음.

자바 입출력 예제 import java.io.*; public class ByteStreamExam {     public static void main(String args[]) {         try {             BufferedInputStream bis = new BufferedInputStream(System.in);             BufferedOutputStream bos = new BufferedOutputStream(System.out);             byte buf[] = new byte[64];             int len = 0;                        bos.write("문자열을 입렵하세요 : \n".getBytes());             bos.flush();                         while((len=bis.read(buf))!= -1) {                 bos.write(buf, 0, len);                 bos.flush();             }             bis.close();             bos.close();         }catch(Exception e) {}     } }

자바 입출력 예외(Exception) 예외란 프로그램 실행 중에 발생하는 오류를 말함. 자바는 예외를 객체로 취급하며, 각 상황에 따른 예외 관련 클래스를 제공하고 있고 상속을 통해 확장할 수 있음. 자바의 예외처리는 자바 프로그램을 좀 더 견고하게 만듦.

자바 입출력 예외 클래스의 계층 구조도

자바 입출력 Exception 클래스는 많은 예외 클래스를 하위 클래스로 가지고 있음. 50여개의 예외 클래스 중 중요 클래스의 구조임. Throwable 클래스는 Error 클래스와 Exception 클래스를 하위 클래스로 가짐. Error 클래스는 주로 하드웨어 관련 예외를 처리하기 위한 클래스 임. 이런 종류의 예외는 일반적으로 프로그램에서 처리하지 않고 JVM에게 위임됨. Exception 클래스는 많은 예외 클래스를 하위 클래스로 가지고 있음.

자바 입출력 주요 예외 클래스 자바 컴파일러는 Error과 RuntimeException를 제외한 나머지 예외에 대해서는 프로그램에서 처리하도록 요구하는데 IOException을 던지는 메서드를 호출할 때 예외처리를 하지 않는다면 컴파일러는 에러를 발생 시켜 프로그래머에게 예외처리를 하도록 요구함. 예외 클래스 설  명 NoSuchMethodException 메서드가 존재하지 않을 때 ClassNotFoundException 호출된 클래스가 존재 하지 않을 때 CloneNotSupportedException 복제가 지원되지 않는 객체의 복제를 시도 했을 때 IllegalaccessException Class클래스의 forName과 같은 메서드를 사용하여 문자열 이름으로 클래스에 로드하려 할 때 InstantiationException 추상클래스나 인터페이스로부터 객체를 생성하려 할 때 InterruptedException 쓰레드가 인터럽트 되었을 때 RuntimeException 프로그램의 실행시간에 예외가 발생 했을 때

자바 입출력 예외처리를 하지 않았을 때 발생하는 컴파일 에러 예외를 처리하는 방법 throws 문을 사용하여 자신을 호출한 메서드에게 위임하는 방법 throws는 처리해야 하는 모든 예외를 하나의 메서드에서 처리하게 할 때 유용 사용법 메서드가 여러 가지의 예외를 처리해야 할 때는 ,(컴마)를 사용하여 처리해야하는 모든 예외 클래스를 나열함.   [접근 제어자] 반환데이터형 메서드이름 throws 예외클래스[, 예외클래스, ...]   {     예외가 발생하는 문장;   }

자바 입출력 try-catch문을 사용하여 처리하는 방법 try-catch문을 사용하여 예외를 처리하는 형식 주의 할 것은 catch문이 순차적으로 실행되기 때문에 가장 하위에 있는 Exception 클래스가 앞에 와야 한다는 것임. finally 문은 선택적으로 사용되는 문장으로서 예외의 발생 여부에 상관없이 수행되어야 하는 문장을 정의함.   try {     예외가 발생하는 문장;   }   catch(Exception 클래스나 상속받아 구현된 클래스의 객체1) {     예외 발생시 수행되어야 하는 문장;   .   catch(Exception 클래스나 상속받아 구현된 클래스의 객체 N) {   [ finally {     예외에 상관없이 무조건 수행되어야 하는 문장;   } ]

자바 입출력 final 수정자 final 수정자는 “한번 결정된 것은 마지막“이라는 의미를 가지고 있음. 클래스에 사용되었을 때는 보안등의 이유로 이 클래스가 더 이상 상속될 수 없는 마지막 클래스임을 의미함. 메서드에 사용되었을 때는 클래스와 비슷하다. 메서드에 사용되었을 때는 더 이상 이 메서드가 오버라이딩 될 수 없다는 것을 의미한다. 보안등의 이유로 상속받는 모든 클래스가 같은 기능을 가져야 할 때 사용함. 멤버 변수나 로컬 변수에 사용되었을 때는 이 변수는 상수와 같이 사용됨. 변수에 final 수정자를 사용할 때는 변수를 선언할 때 값을 설정해주어야 한다는 것을 주의해야 한다.

자바 입출력 예제 class FinalExam {     public static final String className = "FinalExam";     private final int MAX_SIZE = 10;     private int[] array = new int[MAX_SIZE];     //final로 선언된 메서드인 getArraySize()는 FinalExam을 상속받은 FinalClassExam 클래스에서 오버라이딩 할 수 없다.     public final int getArraySize() {         return array.length;     } } // FinalClassExam 클래스를 상속받는 클래스를 구현할 수 없다. public final class FinalClassExam extends FinalExam {     public static void main(String args[]) {         FinalExam finalExam = new FinalClassExam();         System.out.println("클래스 이름 : " + FinalExam.className);         System.out.println("배열의 크기 : " + finalExam.getArraySize()); 예제