책 내용 질문하기
얇은 책75쪽, import java.io.IOException
도서
2018 시나공 정보처리기사 실기(산업기사 포함)
페이지
75
조회수
154
작성일
2019-07-20
작성자
이*희
첨부파일

1번 줄 import java.io.FileReader;

5번 줄 Scanner inf=new Scanner(new FileReader("data.txt"));

 

첫 번째 질문

5번째 줄에서 FileReader( )가 메소드인 줄 알았는데

1번째 줄에서 클래스 파일로서 import하길래

 

FileReader가 클래스인 것을 알았습니다.

 

그러면 FileReader는 클래스인데

객체로 만들지 않는 것인가요??

 

Scanner 처럼 inf라는 객체를 만들지 않아서요.

 

모든 클래스가 객체를 만들어야 하는 것은 아닌가요?

 

 

 

두 번째 질문)

2번 줄 import java.io.IOException

 

토막강의를 봤는데요.

IOException은 파일 입출력 과정에서 발생할 수 있는 오류 같은 예외적인 상황을 알아서 처리해준다고 하셨습니다.

 

어떤 예외적인 상황인지 궁금합니다.

 

생각이 드는 것이

코드는 작성한 그대로 실행이되니까

오타가 하나라도 있으면 실행 조차 안 되는데

어떤 상황을 처리해주나

궁금합니다.

 

 

 

답변
2019-07-22 13:13:16

안녕하세요 길벗수험서 운영팀입니다.


Scanner inf=new Scanner(new FileReader("data.txt")); 

 

'new'라는 예약어가 객체 생성 예약어임을 알아두세요.

 

즉 위에서 생성되는 객체는 2개 입니다.

Scanner 에 대한 객체 inf 

FileReader("data.txt")에 대한 객체 

 

여기서 scanner의 객체는 inf라는 객체명을 갖게 되었으나, filereader의 객체는 객체명 없이 생성된 결과를 scanner 객체의 인자로 넣는 것입니다.

 

위의 코드는 아래와 같이 수정할 수 있습니다. (동일하게 수행됩니다.)


FileReader fRd = new FileReader("data.txt"); 

Scanner inf = new Scanner(fRd); 

 

즉, data.txt를 읽은 메모리 주소를 fRd로 저장한 후, scanner 객체 inf의 인자로 넣어서 입력받을 준비를 해라. 정도가 되겠네요. 

(FileReader 객체만으로 입출력이 가능하지만, 번거로운 과정이 필요해서 scanner를 통하는 것이 편합니다.) 

 

--------------------

 

import java.io.IOException


프로그래밍 언어의 '예외 처리' 파트를 학습하셔야 제대로 이해할 수 있는 구문입니다. 

 

간단하게 설명드리자면, 모든 프로그래밍 언어를 작성할 때는 '예외 처리'라는 것을 해주어야 합니다. 발생할 수 있는 예외에는

"입력 값 오류" 

"0으로 나눌 때 발생하는 논리 오류" 

"메모리 참조 오류" 

등의 다양한 상황을 세분화하여 둘 수 있으며, 하지 않을 경우 해커 등의 외부 공격자가 에러 발생 상황을 악용하여 프로그램을 크래킹하거나, 데이터를 조작할 수 있게되죠.


모든 프로그래밍 언어에는 이에따라 예외처리 구문이 삽입되어야 보안이 보장되는데, 자바의 경우 예외 처리 구문을 넣지 않으면 아예 실행조차 되지 않도록 강제합니다.


특히 외부 입출력이 포함되는 코드의 경우 입출력 예외 처리를 해주어야 하죠.

IOException은 입출력 시 발생할 수 있는 모든 예외들을 통틀어서 정의해주는 기본값(디폴트값) 설정이 저장된 클래스입니다. 세부적으로 지정해줘야 보안이 보장되지면 편의를 위해 기본값만을 이용해서 프로그램이 실행되도록 한 것이 위의 코드입니다.

 

행복한 하루되세요 :)

  • 관리자
    2019-07-22 13:13:16

    안녕하세요 길벗수험서 운영팀입니다.


    Scanner inf=new Scanner(new FileReader("data.txt")); 

     

    'new'라는 예약어가 객체 생성 예약어임을 알아두세요.

     

    즉 위에서 생성되는 객체는 2개 입니다.

    Scanner 에 대한 객체 inf 

    FileReader("data.txt")에 대한 객체 

     

    여기서 scanner의 객체는 inf라는 객체명을 갖게 되었으나, filereader의 객체는 객체명 없이 생성된 결과를 scanner 객체의 인자로 넣는 것입니다.

     

    위의 코드는 아래와 같이 수정할 수 있습니다. (동일하게 수행됩니다.)


    FileReader fRd = new FileReader("data.txt"); 

    Scanner inf = new Scanner(fRd); 

     

    즉, data.txt를 읽은 메모리 주소를 fRd로 저장한 후, scanner 객체 inf의 인자로 넣어서 입력받을 준비를 해라. 정도가 되겠네요. 

    (FileReader 객체만으로 입출력이 가능하지만, 번거로운 과정이 필요해서 scanner를 통하는 것이 편합니다.) 

     

    --------------------

     

    import java.io.IOException


    프로그래밍 언어의 '예외 처리' 파트를 학습하셔야 제대로 이해할 수 있는 구문입니다. 

     

    간단하게 설명드리자면, 모든 프로그래밍 언어를 작성할 때는 '예외 처리'라는 것을 해주어야 합니다. 발생할 수 있는 예외에는

    "입력 값 오류" 

    "0으로 나눌 때 발생하는 논리 오류" 

    "메모리 참조 오류" 

    등의 다양한 상황을 세분화하여 둘 수 있으며, 하지 않을 경우 해커 등의 외부 공격자가 에러 발생 상황을 악용하여 프로그램을 크래킹하거나, 데이터를 조작할 수 있게되죠.


    모든 프로그래밍 언어에는 이에따라 예외처리 구문이 삽입되어야 보안이 보장되는데, 자바의 경우 예외 처리 구문을 넣지 않으면 아예 실행조차 되지 않도록 강제합니다.


    특히 외부 입출력이 포함되는 코드의 경우 입출력 예외 처리를 해주어야 하죠.

    IOException은 입출력 시 발생할 수 있는 모든 예외들을 통틀어서 정의해주는 기본값(디폴트값) 설정이 저장된 클래스입니다. 세부적으로 지정해줘야 보안이 보장되지면 편의를 위해 기본값만을 이용해서 프로그램이 실행되도록 한 것이 위의 코드입니다.

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.