개요
이번 블로그에서는 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로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.