Прочитать один раз дескриптор файла - PullRequest
0 голосов
/ 07 октября 2019

У меня есть ситуация, когда я хочу вернуть дескриптор файла из процедуры. Когда читается последний байт этого дескриптора файла, читаемый файл удаляется. Это будет простой способ создания временного файла, который будет удален после прочтения.

Tempfile на самом деле не работает для этой цели. Чтобы использовать Tempfile, мне нужно было бы создать Tempfile, прочитать и записать все содержимое исходного файла в Tempfile, перемотать Tempfile, а затем вернуть объект Tempfile. Очень расточительно. Я просто хочу открыть файл и вернуть дескриптор файла, но тот, который удаляет файл при чтении последнего байта.

Возможно, я мог бы написать этот класс сам, но я бы предпочел использовать существующее решение, еслиэто существует.

1 Ответ

0 голосов
/ 07 октября 2019

Должен ли он возвращать тип дескриптора файла или он может работать с дескриптором файла? Если это последний, то вы можете использовать закрытие и лямбда. Примерно так:

def sp_handle(fname)
  handle = File.open(fname)

  ->(){
    line = handle.gets
    line ? line : (File.unlink(fname); handle.close)
  }

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...