터미널에서이 Ruby 코드를 실행하면 "작동합니다"라는 메시지가 콘솔에 표시되지 않습니다. 이 코드의 문제점은 무엇입니까?Ruby 터미널 코드가 작동하지 않습니다.
f = File.open("hello.txt", 'w')
f.puts "Hello World"
text = IO.read("hello.txt")
if text == "Hello World"
puts "it works"
end
터미널에서이 Ruby 코드를 실행하면 "작동합니다"라는 메시지가 콘솔에 표시되지 않습니다. 이 코드의 문제점은 무엇입니까?Ruby 터미널 코드가 작동하지 않습니다.
f = File.open("hello.txt", 'w')
f.puts "Hello World"
text = IO.read("hello.txt")
if text == "Hello World"
puts "it works"
end
데이터를 저장하려면 스트림을 닫아야합니다.
f = File.open("hello.txt", "w"){|file| file << "Hello World"}
text = IO.read(f.path)
if text == "Hello World"
puts "it works"
end
나는이 당신은 f.close 누락
도움이되기를 바랍니다 :
f = File.open("hello.txt", 'w')
f.puts "Hello World"
f.close
text = IO.read("hello.txt")
puts "it works" if text == "Hello World"
몇 가지주의 할 수 있습니다.
File
을 사용하여 파일에 쓸 때 효율적으로 데이터를 버퍼링하므로 (파일 시스템에 반복적으로 쓰는 것이 아니라) flush
핸들을 사용하여 버퍼링 된 데이터로 실제로 쓰기를 원할 것입니다 데이터. flush
을 호출하거나 암시 적으로 핸들을 닫음으로써이를 명시 적으로 수행 할 수 있습니다.
2) 사용자가 입력하거나 파일 시스템에서 읽은 gets
일 경우 대개 후행 공백 문자 strip
이 좋습니다. text.strip == "Hello World"
3) 오히려 같은 파일을 두 핸들을 열지 (File
및 IO
)를 통해, 당신은 w
에서 w+
로 전환하여 하나의 읽기/쓰기 스트림을 열 수 :없이 평등 평가가 실패합니다. 그런 다음 올바른 위치로 되감을 수 있습니다. 여기
는 접근 방식이 보일 수 있습니다 방법은 다음과 같습니다
f = File.new("hello.txt", 'w+')
f.puts "Hello World"
f.rewind
text = f.read.strip
puts "It works" if text == "Hello World"
내가이 파일 (F)을 읽을 수 = File.open ("text.txt", 'R') f.rewind 텍스트를이 작업을 수행하려면 = f.read.strip if text == "Hello" puts "작동합니다" 끝 –