Self-Improvement

기초 4 (파일 입출력) 본문

프로그래밍/Ruby

기초 4 (파일 입출력)

JoGeun 2020. 8. 25. 10:34

파일 읽기

 

File.new메소드, 파일 열고 닫기

r => 읽기 모드
w => 쓰기모드
r+ => 읽기 쓰기 모드
1
2
3
file=File.new("testfile","r")
# ... 파일에 대한 
file.close
cs

 

File.open

File.open에 블록을 함께 사용하면 블록 실행이 끝나면 파일도 자동으로 닫아진다.

1
2
3
File.open("testfile","r"do |file|
# ... 파일에 대한 처리
end # 자동으로 파일이 닫아짐
cs

 

gets

gets 메소드를 파일의 내용을 한 줄씩 읽어올 수 있으며 입력값으로 사용될 수 있다.

실행 시 인자로 파일을 준다면 파일의 내용을 읽어온다.

1
2
3
while line = gets
    puts line
end
cs

 

파일을 열어서 읽어온다.

1
2
3
4
5
File.open("worldlist"do |file|
    while line =file.gets
        puts line
    end
end
cs

 

each_line

each_line 메소드를 사용하면 특정 문자열을 기준으로 분리해줄 수 있고 default로는 "\n"이다.

1
2
3
File.open("worldlist"do |file|
    file.each_line {|line| puts "Got #{line.dump}"}
end
cs
1
2
3
File.open("worldlist"do |file|
    file.each_line("h") {|line| puts "Got #{line.dump}"}
end
cs

 

IO.foreach

IO.foreach 메소드를 사용하면 파일을 자동으로 닫아주는 블록 기능과 반복자의 개념을 합칠 수 있다.

1
IO.foreach("worldlist") {|line| puts line}
cs

 

문자열, 배열로 읽기

1
2
3
4
5
6
7
8
9
# 문자열로 읽기
str=IO.read("worldlist")
str.length # 총 문자열 길이
str[030# 0~30까지 문자열 출력
 
# 배열로 읽기
arr = IO.readlines("testfile")
arr.length # 라인 개수
arr[0# 첫번째 라인 출력
cs

 

파일 쓰기

w로 파일을 open한 다음에 puts로 입력을 해주면된다.

1
2
3
4
File.open("output.txt","w"do |file|
    file.puts "hello"
    file.puts "1+2=#{1+2}"
end
cs