학습
Lua 기본적인 파일 입출력
Lua 기본적인 파일 입출력 — 초급
Lua 기본적인 파일 입출력
1. 도입 (왜 배워야 하는가)
파일 입출력은 프로그램이 데이터를 외부에 저장하고, 다시 불러오는 중요한 기능입니다. 예를 들어, 게임에서 플레이어의 진행 상황을 저장하거나, 웹 애플리케이션에서 사용자 설정을 저장하기 위해서는 파일 입출력이 필수적입니다. 만약 이 개념을 모른다면, 데이터를 잃어버리거나, 사용자 경험이 저하되는 등의 문제가 발생할 수 있습니다.
예시
- 게임 데이터를 저장하지 않으면 매번 게임을 시작할 때마다 초기 상태로 돌아가게 되어 사용자에게 불편함을 줄 수 있습니다.
- 웹 애플리케이션에서 사용자 설정을 파일에 저장하지 않으면, 사용자가 로그아웃할 때마다 설정이 초기화되어 불만을 초래할 수 있습니다.
- 파일 쓰기: 데이터를 파일에 저장하는 과정
- 파일 읽기: 파일에서 데이터를 불러오는 과정
2. 핵심 개념 설명
파일 입출력(File I/O)은 프로그램이 파일을 읽고 쓰는 과정을 뜻합니다. 이 과정은 크게 두 가지로 나뉩니다:
비유
파일을 책에 비유할 수 있습니다. 책에 내용을 적는 것은 파일에 데이터를 쓰는 것이고, 책을 읽는 것은 파일에서 데이터를 읽는 것입니다.
관련 용어 정리
| 용어 | 설명 |
|---|---|
| 파일 핸들 | 파일을 다루기 위한 식별자 |
| 모드 | 파일을 여는 방식 (읽기, 쓰기 등) |
| EOF (End of File) | 파일의 끝을 나타내는 지점 |
3. 기본 코드 예제
아래는 Lua에서 파일을 생성하고 내용을 쓰는 간단한 예제입니다.
-- 파일을 쓰기 모드로 엽니다.
local file = io.open("example.txt", "w")
-- 파일에 문자열을 씁니다.
file:write("안녕하세요, Lua 파일 입출력!")
-- 파일을 닫습니다.
file:close()
실행 결과
파일 "example.txt"가 생성되고, 그 안에 "안녕하세요, Lua 파일 입출력!"이라는 텍스트가 저장됩니다.
코드 한 줄씩 동작 설명
local file = io.open("example.txt", "w"): "example.txt"라는 이름의 파일을 쓰기 모드로 엽니다. 파일이 없으면 새로 생성됩니다.file:write("안녕하세요, Lua 파일 입출력!"): 열린 파일에 문자열을 씁니다.file:close(): 파일 작업이 끝났으므로 파일을 닫습니다.- 잘못된 코드
- 올바른 코드
- 잘못된 코드
- 올바른 코드
- 파일 입출력은 데이터 저장 및 불러오기에 필수적입니다.
- Lua에서 파일을 다루기 위해서는
io.open,file:write,file:close등을 사용합니다. - 파일을 열 때 모드를 올바르게 설정해야 하며, 사용 후 반드시 파일을 닫아야 합니다.
- Lua에서 JSON 데이터 다루기
- Lua에서 데이터베이스 연동하기
- Lua의 고급 파일 처리 (바이너리 파일 입출력)
4. 실전 활용 예제
예제 1: 사용자 데이터를 저장하기
쇼핑몰에서 사용자가 장바구니에 담은 상품 정보를 저장할 때 파일 입출력을 사용할 수 있습니다.
local cart = {"사과", "바나나", "체리"}
local file = io.open("cart.txt", "w")
for _, item in ipairs(cart) do
file:write(item .. "\n") -- 각 항목을 줄 바꿈과 함께 씁니다.
end
file:close()
예제 2: 이전에 저장된 데이터 읽기
장바구니에 저장된 상품 정보를 불러오는 코드입니다.
local file = io.open("cart.txt", "r")
local cart = {}
for line in file:lines() do
table.insert(cart, line) -- 각 줄을 장바구니 테이블에 추가합니다.
end
file:close()
for _, item in ipairs(cart) do
print(item) -- 장바구니의 내용을 출력합니다.
end
5. 흔한 실수와 주의사항
실수 1: 파일 모드 잘못 설정
local file = io.open("example.txt", "r") -- 읽기 모드로 열기
file:write("테스트") -- 오류 발생
local file = io.open("example.txt", "w") -- 쓰기 모드로 열기
file:write("테스트")
실수 2: 파일을 닫지 않음
local file = io.open("example.txt", "w")
file:write("테스트")
-- file:close() 호출 안 함
local file = io.open("example.txt", "w")
file:write("테스트")
file:close() -- 반드시 파일을 닫아야 합니다.