Article

명품 자바 에센셜 연습문제 13장(이론)

3분


문제와 해답은 직접 작성한 것으로 오타가 있을 수도 있으며 해답역시 틀린 부분이 있을 수 있습니다. 틀린 부분에 대한 지적은 적극 수용하도록 하겠습니다. 문제를 먼저 풀어보시고 참고용으로만 봐주시길 바랍니다.



연습문제 13장

1. 스트림에 대한 설명으로 틀린 것은?
① 스트림은 단방향이다.
② 스트림은 다른 스트림과 연결될 수 없다.
③ 스트림은 선입선출 구조이다.
④ 스트림은 버퍼를 가질 수 있다.

2. 다음 파일을 읽고자 할 때 바이트 스트림 클래스와 문자 스트림 클래스 중 어떤 것이 더 적합한지 설명하라.
(1) 동영상 파일(.avi)바이트 스트림 클래스
(2) 메모장으로 작성한 파일(.txt)문자 스트림 클래스
(3) 자바 클래스 파일(.class)바이트 스트림 클래스
(4) HTML 파일(.html)문자 스트림 클래스
자바 클래스는 컴파일 된 상태이므로 바이트 스트림이며, HTML의 경우 모두 텍스트로 이루어진 파일이다.


3. 다음 중 바이트 스트림 클래스가 아닌 것은?
① OutputStream
② FileReader
③ BufferedInputStream
④ FileInputStream


4. 동영상 파일을 읽으려고 한다. 가장 적합한 스트림 클래스는?
① InputStream
② FileInputStream
③ FileReader
④ InputStreamReader


5. c:\tmp\test.txt 파일이 다음과 같을 때, 다음 코드의 실행 결과는?

1234567890

FileInputStream fin;
try {
    fin = new FileInputStream("c:\\tmp\\test.txt");
    int c;
    for(int i=0; i<5; i++) {
        c = fin.read();
        if(c != -1) System.out.print((char)c);
        else break;
    }
    fin.close();
} catch (IOException e) { }

12345


6. 다음은 파일 입력 스트림을 생성하는 코드이다. 이 코드는 어떤 경우에 예외가 발생하는가? 그리고 예외를 처리하기 위해 try-catch 블록으로 감싸라.

FileInputStream fin;
FileReader fin = new FileReader("c:\\tmp\\sample.txt");
try {
    FileReader fin = new FileReader("c:\\Temp\\sample.txt");
} catch (FileNotFoundException e) { }


7. 다음은 128바이트 크기의 버퍼를 이용하여 fin으로부터 한번에 128바이트씩 파일을 읽어 fout 스트림에 복사하는 프로그램이다. 빈칸에 적절한 코드를 삽입하라.

FileIOututStream fout;
FileInputStream fin;
try {
    fout = new FileOutputStream("c:\\tmp\\test2.txt");
    fin = new FileInputStream("c:\\tmp\\test.txt");
    byte [] buf = __________; // 버퍼 할당
    while(true) {
        int n = fin.read(buf); // 버퍼 크기만큼 읽는다.
        _________________ // 읽은 버퍼만큼 쓴다.
        if(n < _______) // 버퍼 크기보다 적게 읽었다면
            break; // 파일 끝에 도달했으므로 복사 완료
    fin.close();
    fout.close();
} catch (IOException e) { }

6행 :new byte[128]
9행 :fout.write(buf, 0, n);
10행 :buf.length


8. File 클래스가 제공하는 기능이 아닌 것은?
① 파일 읽기
② 파일 크기
③ 파일의 부모 디렉터리 명
④ 파일 수정 시간


9. 다음 코드에 대해 답하라.

File f=newFile("c:\\Program Files\\java\\jre8\\Welcome.html");

(1) f.isFile()의 리턴 값은?true
(2) f.getParent()의 리턴 값은?"c:\Program Files\java\jre8"
(3) f.getPath()의 리턴 값은?"c:\Program Files\java\jre8\Welcome.html"
(4) f.getName()의 리턴 값은?"Welcome.html"
(5) 다음 코드의 빈칸을 채워 문제와 동일한 파일 객체를 생성하라.

File f=newFile("c:\Program Files\java\jre8","Welcome.html");


10. 다음 코드의 빈칸에 적절한 코드를 삽입하라.

File f = new File("c:\\tmp\\a.txt");
____________________ // (1) c:\tmp에 a.txt 파일이 존재하면 yes 출력
____________________ // (2) a.txt 파일 크기 출력
____________________ // (3) a.txt를 b.txt로 이름 변경
____________________ // (4) b.txt 삭제

2행 :if(f.exists()) System.out.println("yes");
3행 :System.out.println(f.length());
4행 :f.renameTo(new File("c:\\Temp\\b.txt"));
5행 :new File("c:\\Temp\\b.txt").delete();


baealex

댓글 0개

관련 포스트