В моем приложении Rails клиент загружает файлы в куски (100 кБ - 5 МБ) через API. (Он загружает каждый фрагмент, используя повторно тот же HTTP-запрос POST по API).Rails 5: объединение 2 больших текстовых файлов
На серверной стороне, я храню первый загруженный файл в определенном каталоге, путем перемещения временных файлов от загрузки:
tmp = params[:file_pack].tempfile
path = '/xxx/xxx.txt'
FileUtils.move tmp.path, path
Далее, я хочу, чтобы добавить другие куски (второй, третий и т.д.) - whioch приходит в следующий запрос по HTTP - до конца этого первого фрагмента. Поэтому я хочу собрать все куски в одном файле.
Каков наиболее эффективный способ добавления одного файла в конец другого большого файла?
Похоже, что наиболее популярным способом является использование File.open(path, "a")
, но является ли это наиболее эффективным способом? Это File.open
загрузить весь файл в память?
Интересно, что является более эффективным/подходит на Linux - ваш метод или эта команда оболочки (выполнена из рубина) '% х (кошка chunk.txt >> file.txt)' – user1201917
Я проверил это вручную и я думаю, что операция 'cat' занимает больше времени, но я не делал для этого подробных эталонных тестов, поэтому исправьте меня, если я ошибаюсь. – nicq