개요
이번 블로그에서는 Ruby에서 파일을 다루기 위한 방법을 살펴보도록 합니다.
스트림
Ruby언어에서 파일과 데이터를 주고받을 때 스트림(stream)이라는 개념을 사용합니다. Ruby에서는 스트림을 통해 데이터의 입출력을 합니다.
다음은 Ruby에서 파일을 읽고 쓰는 절차입니다.
- 데이터를 흘려보내기 위한 스트림을 준비한다.
- 파일에서 프로그램으로 또는 프로그램에서 파일로 데이터를 흘려보낸다.
- 스트림을 닫는다.
파일은 크게 텍스트 파일과 바이너리 파일이 있습니다. 이에 따라 스트림도 문자 스트림과 바이트 스트림이 있습니다.
스트림 | 설명 |
---|---|
문자 스트림 | 16비트 유니코드 문자 데이터를 다룹니다. |
바이트 스트림 | 8비트 데이터를 다룹니다. |
스트림을 다룰 때는 IO
클래스를 사용하며 파일의 입출력에는 IO 클래스의 서브 클래스인 File
클래스를 사용합니다.
클래스 | 설명 |
---|---|
IO 클래스 | 프로그램에서 외부와 데이터를 주고 받기 위한 기능 제공 |
File 클래스 | 파일의 읽기, 쓰기 기능 제공 |
이번 블로그에서는 텍스트만 다루도록 하겠습니다.
파일 읽기
파일을 읽기 위해서는 다음과 같은 절차를 따릅니다.
파일 열기
파일을 열기 위해서는
open
메서드 또는File.open
메서드를 사용합니다.io = open(fileName, "r") io = File.open(fileName, "r")
파일을 열 때, 모드를 지정할 수 있습니다.
모드 설명 r 읽기 모드 w 쓰기 모드 a 추가 쓰기 모드 데이터 읽기
다음과 같이
read
메서드를 사용하면, 데이터를 전부 읽어 올 수 있습니다.io.read
파일의 용량이 큰 경우, 한번에 읽어오면 메모리 문제가 발생할 수 있습니다. 파일의 용량이 큰 경우 다음과 같이
gets
메서드를 사용하여, 한줄씩 읽어 올 수 있습니다.while data = io.gets puts data end
파일 닫기
필요한 모든 동작을 수행하였다면,
close
메소드를 사용하여 파일을 닫습니다.io.close
파일 쓰기
텍스트 파일에 데이터를 쓰는 경우 다음과 같은 절차를 따릅니다.
파일 열기
텍스트 파일에 데이터를 쓰기 위해서는,
w
나a
모드를 사용하여 파일을 열어야 합니다.io = open(fileName, "w")
데이터 쓰기
다음과 같이
write
메서드를 사용하여 데이터를 파일에 씁니다.io.write("Hello world")
파일 닫기
파일에 데이터를 모두 썼다면, 다음과 같이 파일을 닫아줍니다.
io.close
예제
다음은 파일 입출력에 관한 예제입니다.
data = "Hello world"
io = open("example.txt", "w")
io.write(data)
io.close
io = open("example.txt")
io.each {|line|
puts line
}
io.close
완료
이것으로 Ruby에서 파일을 읽고 쓰는 방법에 대해서 알아보았습니다. 파일을 다룰 때 가장 중요한 점은 파일을 다 사용한 후 꼭 close
를 사용하여 다 사용한 파일은 닫아야 하는 것입니다. 파일을 닫지 않으면 다른 프로세스가 파일을 읽을 수 없어 문제가 발생할 수 있습니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku
가 개발한 앱을 한번 사용해보세요.Deku
가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.