본문 바로가기
카테고리 없음

BoxLang과 파일 입출력 – 파일 생성, 읽기, 쓰기 (14강)

by mystory55781 2025. 5. 16.

BoxLang과 파일 입출력 – 파일 생성, 읽기, 쓰기

프로그램 개발에서 **파일 입출력**(I/O)은 매우 중요한 작업입니다. 파일을 사용하여 데이터를 저장하거나, 다른 소프트웨어와의 데이터 교환을 할 수 있습니다. BoxLang에서는 파일을 생성하고, 파일에 데이터를 읽고 쓸 수 있는 기능을 제공합니다. 이번 강의에서는 BoxLang을 사용하여 파일을 생성하고, 읽고, 쓰는 방법을 자세히 알아보겠습니다.

파일 입출력 개념

파일 입출력은 데이터를 파일에 저장하거나, 파일에서 데이터를 읽어오는 작업을 포함합니다. 이를 통해 프로그램은 데이터를 지속적으로 저장하거나, 다양한 외부 시스템과 정보를 교환할 수 있습니다. BoxLang에서는 파일 시스템을 다루는 간단하고 직관적인 API를 제공하여, 파일 작업을 쉽게 처리할 수 있습니다.

파일 생성하기

파일을 생성하는 작업은 매우 기본적인 파일 입출력 작업 중 하나입니다. BoxLang에서 파일을 생성하려면 `File.create`와 같은 메소드를 사용하여 새로운 파일을 만들 수 있습니다. 파일이 이미 존재하면 새로운 파일이 덮어씌워지므로 주의해야 합니다.

import BoxLang.File

// 새로운 파일 생성
func createFile() {
    var filePath = "example.txt"
    var file = File.create(filePath)
    if (file != null) {
        File.write(file, "파일 생성 성공!")
        File.close(file)
        println("파일이 성공적으로 생성되었습니다.")
    } else {
        println("파일 생성에 실패했습니다.")
    }
}

createFile()

위 코드는 `example.txt`라는 이름의 새 파일을 생성하고, 그 파일에 "파일 생성 성공!"이라는 텍스트를 작성합니다. 파일을 다 사용한 후에는 반드시 `File.close()`를 호출하여 파일을 닫아야 합니다.

파일 읽기

파일에서 데이터를 읽는 것은 매우 일반적인 작업입니다. BoxLang에서는 `File.read` 메소드를 사용하여 파일에서 데이터를 읽을 수 있습니다. 읽은 데이터는 문자열 형태로 반환됩니다.

import BoxLang.File

// 파일 읽기
func readFile() {
    var filePath = "example.txt"
    var file = File.open(filePath, "r") // 읽기 모드로 파일 열기
    if (file != null) {
        var content = File.read(file)
        File.close(file)
        println("파일 내용: " & content)
    } else {
        println("파일을 열 수 없습니다.")
    }
}

readFile()

위 코드는 `example.txt` 파일을 읽고, 파일의 내용을 콘솔에 출력하는 예시입니다. 파일이 성공적으로 열리면 파일 내용을 읽어와 출력하고, 작업이 끝난 후에는 `File.close()`로 파일을 닫습니다.

파일에 데이터 쓰기

파일에 데이터를 쓰는 것은 파일 입출력의 핵심적인 작업입니다. BoxLang에서는 `File.write` 메소드를 사용하여 파일에 데이터를 쓸 수 있습니다. 파일을 열 때 모드에 따라 데이터를 추가하거나 덮어쓸 수 있습니다.

import BoxLang.File

// 파일에 데이터 쓰기
func writeFile() {
    var filePath = "example.txt"
    var file = File.open(filePath, "w") // 쓰기 모드로 파일 열기
    if (file != null) {
        File.write(file, "이 데이터는 파일에 추가되었습니다.")
        File.close(file)
        println("파일에 데이터가 성공적으로 추가되었습니다.")
    } else {
        println("파일을 열 수 없습니다.")
    }
}

writeFile()

위 코드는 `example.txt` 파일을 **쓰기 모드**("w")로 열고, 그 안에 "이 데이터는 파일에 추가되었습니다."라는 텍스트를 씁니다. 기존의 파일 내용이 모두 덮어쓰여지므로, 기존 데이터가 사라지게 됩니다. 작업이 끝난 후에는 `File.close()`를 호출하여 파일을 닫습니다.

파일에 데이터 추가하기

파일에 새로운 데이터를 추가할 때는 **쓰기 모드**("w") 대신 **추가 모드**("a")를 사용해야 합니다. 이렇게 하면 기존 파일 내용은 그대로 두고, 그 뒤에 새로운 데이터를 덧붙일 수 있습니다.

import BoxLang.File

// 파일에 데이터 추가하기
func appendToFile() {
    var filePath = "example.txt"
    var file = File.open(filePath, "a") // 추가 모드로 파일 열기
    if (file != null) {
        File.write(file, "\n이 데이터는 파일에 추가된 내용입니다.")
        File.close(file)
        println("파일에 데이터가 성공적으로 추가되었습니다.")
    } else {
        println("파일을 열 수 없습니다.")
    }
}

appendToFile()

위 코드는 기존의 `example.txt` 파일에 새로운 데이터를 추가하는 예시입니다. `"\n"`을 사용하여 새로운 줄에서 데이터를 추가할 수 있습니다. 기존 데이터를 덮어쓰지 않고, 파일 끝에 추가됩니다.

파일 경로 처리

파일을 다룰 때는 파일 경로를 정확히 지정해야 합니다. BoxLang에서는 상대 경로와 절대 경로 모두 지원합니다. 상대 경로는 현재 작업 디렉토리를 기준으로, 절대 경로는 시스템에서 파일이 위치하는 전체 경로를 지정합니다. 파일 경로를 정확히 지정하지 않으면, 파일을 찾을 수 없어 오류가 발생할 수 있습니다.

예를 들어, 파일 경로를 설정할 때 다음과 같은 방법을 사용할 수 있습니다:

  • 상대 경로: `"data/example.txt"`
  • 절대 경로: `"/Users/username/Documents/example.txt"`

파일 경로를 적절히 설정하여 파일을 찾고, 데이터를 읽고 쓰는 데 문제가 없도록 해야 합니다.

파일 입출력 오류 처리

파일 작업을 할 때는 오류가 발생할 수 있습니다. 예를 들어, 파일이 존재하지 않거나, 권한이 부족한 경우, 파일을 열지 못할 수 있습니다. 이런 오류를 처리하기 위해 `try-catch` 구문을 사용할 수 있습니다.

import BoxLang.File

func readFileWithErrorHandling() {
    var filePath = "nonexistent.txt"
    try {
        var file = File.open(filePath, "r")
        var content = File.read(file)
        File.close(file)
        println("파일 내용: " & content)
    } catch (error) {
        println("오류 발생: " & error)
    }
}

readFileWithErrorHandling()

위 코드는 파일을 읽는 도중 발생할 수 있는 오류를 처리하는 방법을 보여줍니다. 파일이 존재하지 않으면 오류가 발생하고, 이를 `catch` 블록에서 처리할 수 있습니다.

마무리 및 다음 강의 예고

이번 강의에서는 BoxLang을 사용하여 파일을 생성하고, 읽고, 쓰는 방법에 대해 배웠습니다. 또한, 파일 경로를 처리하고 오류를 처리하는 방법도 함께 살펴보았습니다. 이러한 기본적인 파일 작업을 활용하여 데이터 저장소를 만들거나, 다양한 프로그램에서 파일을 활용할 수 있습니다.

다음 강의에서는 **데이터베이스와의 연동**에 대해 다룰 예정입니다. 데이터를 파일이 아니라 데이터베이스에 저장하고 관리하는 방법에 대해 배우게 될 것입니다. 많은 기대 바랍니다!