Мне нужно прочитать данные из базы данных, а затем сохранить их в текстовом файле.
Как я могу сделать это в Ruby? Есть ли в Ruby система управления файлами?
Рубиновый класс файла даст вам все входы и выходы ::new
и , ::open
но его родитель, класс IO , попадет в глубину #read
и #write
.
Вы ищете следующее?
источник
yourfile
переменная, которая содержит имя файла для записи.f.write
исключение.File.write('filename', 'content')
IO.write('filename', 'content')
Вы можете использовать короткую версию:
Возвращает написанную длину; смотрите :: написать для более подробной информации и опций.
Чтобы добавить файл, если он уже существует, используйте:
источник
Это предпочтительный подход в большинстве случаев:
Когда блок передается
File.open
, объект File будет автоматически закрыт после его завершения.Если вы не передаете блок в
File.open
, вы должны убедиться, что файл правильно закрыт и содержимое было записано в файл.Вы можете найти это в документации :
источник
File.open
blog.rubybestpractices.com/posts/rklemme/… это также упоминается в официальной документацииНайденный здесь ответ Замбри самый лучший.
где ваши варианты для
<OPTION>
:r
- Только для чтения. Файл должен существовать.w
- Создать пустой файл для записи.a
- Добавить в файл. Файл создается, если он не существует.r+
- Откройте файл для обновления и чтения и записи. Файл должен существовать.w+
- Создать пустой файл для чтения и записи.a+
- Откройте файл для чтения и добавления. Файл создается, если он не существует.В вашем случае
w
это предпочтительнее.источник
Для тех из нас, кто учится на примере ...
Запишите текст в файл следующим образом:
БОНУСНАЯ ИНФОРМАЦИЯ ...
Прочитайте это обратно, как это
Часто я хочу прочитать файл в буфер обмена ***
И в других случаях я хочу написать, что в моем буфере обмена в файл ***
*** Предполагается, что у вас установлен гем буфера обмена
Смотрите: https://rubygems.org/gems/clipboard
источник
IO.write
опции перезаписывать содержимое файла вместо добавления. Добавить с IO.write немного утомительно.Errno::ENOENT: No such file or directory @ rb_sysopen
сообщение и файл, созданный с размером 0 байт.Чтобы уничтожить предыдущее содержимое файла, запишите в него новую строку:
Чтобы добавить файл без перезаписи его старого содержимого:
источник