Как я могу переместить файлы (например, командную оболочку mv) на node.js? Есть ли способ для этого или я должен прочитать файл, записать в новый файл и удалить старый файл?
151
Согласно комментарию seppo0010, я использовал для этого функцию переименования.
http://nodejs.org/docs/latest/api/fs.html#fs_fs_rename_oldpath_newpath_callback
fs.rename (oldPath, newPath, callback)
Добавлено в: v0.0.2
oldPath <String> | <Buffer> newPath <String> | <Buffer> callback <Function>
Асинхронное переименование (2). Никакие аргументы, кроме возможного исключения, не передаются для обратного вызова завершения.
Этот пример взят из: Node.js в действии
источник
Использование nodejs изначально
(ПРИМЕЧАНИЕ: «Это не будет работать, если вы пересекаете разделы или используете виртуальную файловую систему, не поддерживающую перемещение файлов. [...]" - Flavien Volken Sep 2 '15 at 12:50 ")
источник
Используйте модуль узла mv, который сначала попытается выполнить,
fs.rename
а затем откатится до копирования, а затем отсоединения.источник
mv
модуля узла. Мне нравится использовать npm для установки;npm install mv --save-dev
; вот ссылкаutil.pump
устарел в узле 0.10 и генерирует предупреждающее сообщениеИтак, решение для копирования файлов с использованием потоков:
источник
Используя функцию переименования:
где
предполагая, что вы хотите оставить имя файла без изменений.
источник
fs-extra
Модуль позволяет сделать это с егоmove()
методом. Я уже реализовал это, и он работает хорошо, если вы хотите полностью переместить файл из одного каталога в другой - т.е. удаление файла из исходного каталога. Должно работать для большинства основных случаев.источник
Вот пример использования util.pump из >> Как переместить файл a в другой раздел или устройство в Node.js?
источник
fs.rename()
(в томе переименование файла и перемещение его - это одно и то же).Использование обещаний для версий Node более 8.0.0:
источник
fs.rename
не работает, если вы находитесь в среде Docker с томами.async
объявление вmoveThem
функцию.Только мои 2 цента, как указано в ответе выше : метод copy () не должен использоваться как есть для копирования файлов без небольшой корректировки:
Функция копирования, обернутая в Обещание:
Однако имейте в виду, что файловая система может произойти сбой, если целевая папка не существует.
источник
Я хотел бы разделить все вовлеченные функции (то есть
rename
,copy
,unlink
) друг от друга , чтобы получить гибкость и promisify все, конечно:moveFile
это просто вспомогательная функция, и мы можем применять функции отдельно, когда, например, нам нужна более точная обработка исключений.источник
Shelljs - очень удобное решение.
команда: mv ([опции,] источник, место назначения)
Доступные Варианты:
-f: force (поведение по умолчанию)
-n: предотвратить перезапись
источник
Это перефразировка ответа Теомана Шипахи с немного менее двусмысленным названием, и он следует принципу определения кода перед попыткой его вызвать. (Хотя узел позволяет вам поступить иначе, не рекомендуется ставить телегу перед лошадью.)
источник
С помощью приведенного ниже URL-адреса вы можете скопировать или переместить файл CURRENT Source в Destination Source.
источник
Если вы пытаетесь переместить или переименовать исходный файл node.js, попробуйте этот файл https://github.com/viruschidai/node-mv . Он обновит ссылки на этот файл во всех других файлах.
источник
Вы можете использовать
move-file
пакет npm:Сначала установите пакет:
Использование:
источник