IMCAT.DEV
로그인 가입
Lua 입문 기초

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 파일 입출력!"이라는 텍스트가 저장됩니다.

    코드 한 줄씩 동작 설명

    1. local file = io.open("example.txt", "w"): "example.txt"라는 이름의 파일을 쓰기 모드로 엽니다. 파일이 없으면 새로 생성됩니다.
    2. file:write("안녕하세요, Lua 파일 입출력!"): 열린 파일에 문자열을 씁니다.
    3. file:close(): 파일 작업이 끝났으므로 파일을 닫습니다.
    4. 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: 파일 모드 잘못 설정

    5. 잘못된 코드
    6. local file = io.open("example.txt", "r") -- 읽기 모드로 열기
      file:write("테스트") -- 오류 발생
    7. 올바른 코드
    8. local file = io.open("example.txt", "w") -- 쓰기 모드로 열기
      file:write("테스트")

      실수 2: 파일을 닫지 않음

    9. 잘못된 코드
    10. local file = io.open("example.txt", "w")
      file:write("테스트")
      -- file:close() 호출 안 함
    11. 올바른 코드
    12. local file = io.open("example.txt", "w")
      file:write("테스트")
      file:close() -- 반드시 파일을 닫아야 합니다.

      6. 정리

    13. 파일 입출력은 데이터 저장 및 불러오기에 필수적입니다.
    14. Lua에서 파일을 다루기 위해서는 io.open, file:write, file:close 등을 사용합니다.
    15. 파일을 열 때 모드를 올바르게 설정해야 하며, 사용 후 반드시 파일을 닫아야 합니다.
    16. 다음에 학습하면 좋은 주제

    17. Lua에서 JSON 데이터 다루기
    18. Lua에서 데이터베이스 연동하기
    19. Lua의 고급 파일 처리 (바이너리 파일 입출력)