본문으로 건너뛰기
Java 기초집LESSON 20

파일 입출력: 게임 기록을 텍스트 파일로 저장하고 읽기

난이도입문 → 초급
예상 시간35분
선수지식이전 강의

20강. 파일 입출력: 게임 기록을 텍스트 파일로 저장하고 읽기

1. 이번 강의에서 해결할 문제

프로그램을 종료하면 메모리 List가 사라집니다. 경로·문자 인코딩·예외와 파일 교체 실패를 고려해 로컬 파일로 보존해야 합니다.

2. 학습 목표

3. 핵심 개념

Path는 운영체제 경로를 값으로 표현하고 Files는 작은 텍스트 파일의 읽기·쓰기를 제공합니다. checked IOException은 호출자가 처리하거나 throws로 전달해야 합니다. 실제 중요한 데이터는 임시 파일에 완전히 쓴 뒤 교체하는 방식이 더 안전하지만 이 과정은 로컬 학습 파일만 다룹니다.

4. 단계별 실습

1. src/FileRecordStore.java 작성

실행 환경: 코드 편집기

실행 위치: C:\dev\game-records

실행 전 확인: 같은 이름의 기존 파일이 있다면 덮어쓰기 전에 Git diff와 이번 강의 변경 범위를 확인합니다.

대상 파일: src/FileRecordStore.java

src/FileRecordStore.java
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

public class FileRecordStore {
private static final Path FILE = Path.of("data", "records.txt");

public static void main(String[] args) {
List<String> lines = List.of("Alice ranked 1350 28", "Bob casual 820 16");
try {
Files.createDirectories(FILE.getParent());
Files.write(FILE, lines, StandardCharsets.UTF_8);
List<String> loaded = Files.readAllLines(FILE, StandardCharsets.UTF_8);
loaded.forEach(System.out::println);
} catch (IOException e) {
System.err.println("기록 파일 처리 실패: " + e.getMessage());
}
}
}

2. PowerShell에서 컴파일·실행

실행 환경: Windows PowerShell

실행 위치: C:\dev\game-records

실행 전 확인: java -versionjavac -version이 선택한 LTS JDK를 가리키고, 소스 파일명이 public 클래스명과 일치하는지 확인합니다.

대상: 이 강의의 .java 파일, out의 class 파일과 명시된 출력 파일

Windows PowerShell
Set-Location C:\dev\game-records
javac -d out .\src\FileRecordStore.java
java -cp out FileRecordStore
Get-Content .\data\records.txt

예상 결과: data/records.txt가 UTF-8로 생성되고 두 기록이 프로그램과 PowerShell에서 출력됩니다.

5. 코드가 동작하는 이유

Files.createDirectories는 부모 폴더가 없을 때 만들고 이미 있으면 유지합니다. 탭 구분은 필드 경계를 보존하며 명시한 UTF-8이 저장과 읽기에 동일하게 적용됩니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

파일 입출력: 게임 기록을 텍스트 파일로 저장하고 읽기 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“파일 입출력: 게임 기록을 텍스트 파일로 저장하고 읽기” 실행 결과를 설명하는 내용으로 가장 알맞은 것은 무엇인가요?
  2. 문제 2‘현재 작업 폴더를 확인하지 않고 상대 경로 쓰기’ 상태에 관한 “파일 입출력: 게임 기록을 텍스트 파일로 저장하고 읽기” 본문의 설명으로 가장 알맞은 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

20강. 파일 입출력: 게임 기록을 텍스트 파일로 저장하고 읽기 미완료 상태