inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

나도코딩의 자바 기본편 - 풀코스 (20시간)

파일 읽고 쓰기

new FileWriter() 랑 new File() 차이점이 뭔가요?

1222

김아현

작성한 질문수 8

0

 앞에 파일 다루기 강의에서는 파일 생성할때

new File() 로 파일을 만들었는데

이번 강의에서는 new FileWriter() 로 파일을 만드는 이유가 뭘까요?

java 객체지향

답변 1

0

나도코딩

안녕하세요?
자바에서는 파일 관련한 여러 클래스가 제공되는데 그 중에서 File 은 파일 생성, 삭제, 수정 또는 파일의 정보를 얻어오는 등 목적으로 사용될 수 있으며, FileWriter 는 파일에 어떤 내용을 쓰는데 사용될 수 있습니다.

File file = new File("sample.txt");
if (file.exists()) {
    System.out.println("파일이 존재합니다");
} else {
    System.out.println("파일이 존재하지 않습니다");
}
try {
    FileWriter writer = new FileWriter("sample.txt");
    writer.write("이 문장을 파일에 적어주세요");
    writer.close();
} catch (IOException e) {
    e.printStackTrace();
}

파일 다루기 편에서는 파일을 만들고 정보를 얻어오는 작업, 그리고 파일이 존재하는지 여부를 확인하기 위한 방법을 안내하기 위해 File 을 사용하였습니다. 파일 읽고 쓰기 편에서는 파일에 내용을 쓰기 위해 FileWriter 를 사용하였습니다. 그리고 BufferedWriter 는 임시 공간인 버퍼를 이용하여 많은 내용을 보다 효율적으로 저장할 때 사용되는데 파일에 내용을 쓰는 것이 목적이므로 FileWriter 와 함께 사용될 수 있지만 File 과는 함께 사용될 수 없습니다.

BufferedWriter 부분을 Ctrl + 마우스 클릭 해보시면 다음과 같은 코드를 확인하실 수 있어요.

public BufferedWriter(Writer out) {
    this(out, defaultCharBufferSize);
}

보시는 것처럼 전달값으로 Writer 객체를 받고 있습니다. 그리고 FileWriter 를 Ctrl + 마우스 클릭 해보시면 클래스 정의하는 부분이 다음처럼 되어 있는 것을 알 수 있는데요.

public class FileWriter extends OutputStreamWriter { ... }

여기서 OutputStreamWriter 부분을 다시 Ctrl + 마우스 클릭 해보시면 최종적으로 Writer 클래스를 상속하는 자식 클래스라는 것을 확인할 수 있습니다.

public class OutputStreamWriter extends Writer { ... }

결국 BufferedWriter 객체를 생성할 때 함께 사용한 FileWriter 객체는 Writer 클래스의 자식 클래스이므로 문제 없이 사용이 가능하지만 File 객체는 Writer 클래스를 상속하지 않으므로 사용이 불가능합니다. 궁금증 해결에 도움되시길 바라겠습니다 😊
감사합니다.

자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?

0

132

2

static이 뭐였는지 기억이 안나요 ㅜㅜ

0

110

2

Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의

0

69

1

사고력 키우는 법이 어떤게 있나요?

0

87

2

getter setter

0

100

2

섹션9. 66 메소드 오버로딩 시 질문이 있습니다.

0

77

1

안녕하세요 갑자기 프로그램 에러가 떠서 안되네요

0

75

2

변수 이름짓는법

0

114

2

intelli J 실행오류

0

114

2

혹시 이건 수학적 사고가 부족한 걸까요?

0

152

2

영상이 재생이 안됩니다.

0

163

3

이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.

0

114

2

응용이 어렵습니다.

0

203

2

IntelliJ가 보이지 않습니다.

0

182

3

JDK 버전 문의

0

128

2

BlackBox 파일 내에서 메소드 정의

0

135

1

동기화

0

120

2

Iterator 문의

0

101

1

코드 순서 문의

0

139

1

클래스 메소드

0

146

2

Quiz_05 관련 질문드립니다 !

0

114

2

다운로드가 안됩니다

0

162

2

다형성

0

115

2

HashMap

0

75

2