2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[명품자바 8장] 연습문제 1~10

2023. 1. 20. 17:33ㆍ[자바]스프링

1.스트림에 대한 설명으로 틀린것은?

(1) 입출력이 동시에 되는 스트림은 없다.

(2)스트림은 다른 스트림과 연결될 수 없다.

 

(3)스트림은 먼저 들어온 데이터를 먼저 내보내는 방식이다.

 

(4)스트림은 바이트를 다루는 스트림과 문자만 다루는 스트림으로 나누어진다.

 

 

▶(2) 자바에서 스트림은 다른 스트림과 연결하여 사용함으로써 다양한 데이터 입출력을

가능하게 한다.

 

2.다음 응용에서 어떤 입출력 스트림 클래스를 사용하여야 하는가?

(1)음악 파일 연주

▶ 음악파일은 바이너리 파일임으로 파일 입력 바이트 스트림 InputFileStream을 사용하여야 한다.

 

(2) PPT파일 복사

▶PPT파일은 바이너리 파일이고 읽고 쓰는 작업을해야한다. 그렇기에 읽고 쓰는 파일

FileInputStram과 FileOutputStream을 사용해야한다.

 

(3)영어와 한글이 기록된 사전 읽기

▶영어와 한글을 두개 다 문자열이기 때문에 이들의 기록된 파일을 읽기 위해선

FileReader를 써서 읽으면 된다.

 

(4) 선수이름과 점수를 문자열로 저장

 

▶선수 이름과 점수를 문자열로 저장하기 위해서는 파일을 써서 넣어야 하기 때문에

FileReader를 쓰면된다.

 

 

3.이미지 파일을 읽으려고 한다. 가장 적합한 클래스는?

 

1. InputStreamReader

>이것은 바이트를 문자열로 바꾸는 것 이다. 하지만 이미지 파일은 경로가 문자열로 되어있기 때문에 적합하지 않다.

 

2. File

▶ File 메서드는 그 경로값을 가져오는 것 이지 읽거나 쓸 수 없다.

 

3. FileReader

▶ FileReader는 문자열을  읽을때 사용된다. 그렇기에 파일의 경로는 문자열로 되어있기 때문에 적합한 답이다.

 

4. FileInputStream

 

▶FileInputStream은 바이트를 읽을때 사용된다. 즉 바이너리 정보들을 읽을때 사용된다.

 

 

4.다음은 파일을 읽기 위해 스트림을 생성하는 코드이다. 이 코드가 실행될 때 발생할 수 있는

예외가 어떤 것이 있는지 설명하고 , try - catch블록으로 감싸는 코드를 작성하라.

 

 

FileInputStream fin = new FileInputStream("song.mp3");

 

 

▶파일을 찾을 수 없는 예외가 있기 때문에 입출력스트림을 쓸때에는 반드시 예외처리를 해줘야 한다.

 

 

 

package 예제파일1번;
import java.io.*;
import java.util.Scanner;
import java.util.*;

public class ex_5 {
    public static void main(String[] args){
     try {
         FileInputStream fin = new FileInputStream("song.mp3");
     }catch (FileNotFoundException e){
         System.out.println("파일을 찾을 수 없습니다.");
     }



    }
}

 

 

 

5.파일의 크기를 알려고 할 때 필요한 클래스는?

1.File

▶파일의 크기를 알려준다.

 

 

 

6.File 클래스의 직접적인 기능이 아닌 것은?

 

(1) 파일 읽고 쓰기

▶ File 클래스는 File을 읽고 쓸 수 없다. 읽고 쓰기 위해선

FileReader클래스나 FileWirter를 써야한다.

 

(2) 파일 이름 변경

 

▶ File 클래스에 있는 renameTo 메서드를 사용하면 변경 가능.

 

(3) 새 디렉터리 만들기

 

▶ File클래스에 있는 mkdir() 메서드를 사용해 새 디렉터리를 만들어준다.

 

(4) 파일 삭제 

 

▶ File클래스에 있는 delete()를 사용해 삭제가능.

 

 

 

 

7. 다음 코드에 대해 물음에 답하라.

 

File file = new File("C:\\window\\system.ini");

 

(1) File.isFile()의 리턴 값은?

 

True

 

(2) file.getParent()의 리턴 값은?

 

▶ Parent()메서드는 바로 위에 있는 경로값 까지 가져온다.

그러므로 "C:\\window" 까지 가져온다.

 

3. file.getPath()의 리턴 값은?

 

▶이 메서드의 경우 전체 경로를 가져다 주기 때문에

리턴 값은 "C:\\window\\system.ini"

 

 

4.file.getName()의 리턴 값은?

 

▶ 이 메서드는 그 파일의 이름을 리턴 해준다.

그러므로 리터 값은 system.ini

 

 

5.아래 빈칸을 채워 문제의 코드와 동일한 코드를 구성하라.

 

File file = new File("C:\\window" , "system.ini");

 

 

8.문자 집합에 대한 설명으로 틀린 것은?

 

(1) 문자들의 인코딩 정보로 구성된 문자 인코딩 세트를 뜻한다.

 

(2) 텍스트 파일 읽기 시 문자 집합을 알려주지 않으면 제대로 읽지 못하는 경우가 발생한다.

 

(3) 바이트 스트림 입출력 시 문자 집합을 고려햐여 입출력해야 한다.

 

(4) 윈도우에서 작성된 텍스트 파일은 기본적으로 "MS949" 문자 집합으로 인코딩 된다.

 

 

 

9번

 

 

 

10번

 

다음은 50바이트 크기의 버퍼를 사용하여 C:\\temp\\sample.txt 를 읽어 화면에 출력하는 소스 코드의 일부이다. 빈칸을 채워라.