2014-11-04 3 views

ответ

1

Другой способ:

IO.foreach("sample.txt") {|line| line } 

Или

File.foreach('sample.txt') {|line| line } 
1

File::open возвращает дескриптор файла (который, видимо, в настоящее время распечатано как #<File:0x007ff65ee297b0>.) Если вам нужно, чтобы содержимое файла было построчно, вы можете использовать IO::readlines:

IO.readlines("sample.txt").each do |line| 
    puts line 
end 
4

Вы печатаете объект файла. Для того, чтобы получить линию содержимого по линии, вы можете использовать File.foreach

File.foreach('sample.txt', 'r') do |line| 
    puts line # called for every line 
end 

Чтобы обработать весь файл сразу, вы можете использовать метод read на файле объекта:

File.open('sample.txt', 'r') do |file| 
    puts file.read # called only once 
end 
2

Это не ошибка. Он правильно печатает одну строку, которая является вашим файлом. Здесь вы создаете файл-объект, и вы не просили его брать строки или что-то еще в этом случае.

Несколько полезных ответов уже есть. Но вот еще один способ сделать это с минимальным изменением кода:

File.open("sample.txt", 'r').each_line do |f| 
    puts f 
end 
Смежные вопросы