¿Cómo puedo mover archivos (como el comando mv shell) en node.js? ¿Hay algún método para eso o debería leer un archivo, escribir en un archivo nuevo y eliminar un archivo anterior?
151
Según el comentario seppo0010, utilicé la función de cambio de nombre para hacer eso.
http://nodejs.org/docs/latest/api/fs.html#fs_fs_rename_oldpath_newpath_callback
fs.rename (oldPath, newPath, callback)
Añadido en: v0.0.2
oldPath <String> | <Buffer> newPath <String> | <Buffer> callback <Function>
Cambio de nombre asincrónico (2). No hay argumentos distintos de una posible excepción para la devolución de llamada de finalización.
Este ejemplo tomado de: Node.js en acción
fuente
Usar nodejs de forma nativa
(NOTA: "Esto no funcionará si está cruzando particiones o está utilizando un sistema de archivos virtual que no admite archivos en movimiento." [...] - Flavien Volken 2 de septiembre de 2015 a las 12:50 ")
fuente
Utilice el módulo de nodo mv , que primero intentará hacer una
fs.rename
copia de seguridad y luego volver a copiar y luego desvincular.fuente
mv
módulo de nodo. Me gusta usar npm para instalar;npm install mv --save-dev
; aquí está el enlace npmutil.pump
está en desuso en el nodo 0.10 y genera un mensaje de advertenciaEntonces, la solución para copiar archivos usando secuencias es:
fuente
Usando la función renombrar:
dónde
suponiendo que desea mantener el nombre del archivo sin cambios.
fuente
El
fs-extra
módulo le permite hacer esto con sumove()
método. Ya lo implementé y funciona bien si desea mover completamente un archivo de un directorio a otro, es decir. eliminando el archivo del directorio fuente. Debería funcionar para la mayoría de los casos básicos.fuente
Aquí hay un ejemplo usando util.pump, desde >> ¿Cómo muevo el archivo a a una partición o dispositivo diferente en Node.js?
fuente
fs.rename()
(dentro de un volumen, cambiar el nombre de un archivo y moverlo es lo mismo).Uso de promesas para versiones de nodo superiores a 8.0.0:
fuente
fs.rename
no funciona si está en un entorno Docker con volúmenes.async
declaración a lamoveThem
función.Solo mis 2 centavos como se indica en la respuesta anterior : el método copy () no debe usarse tal cual para copiar archivos sin un ligero ajuste:
La función de copia envuelta en una Promesa:
Sin embargo, tenga en cuenta que el sistema de archivos podría fallar si la carpeta de destino no existe.
fuente
Me gustaría separar todas las funciones implicadas (es decir
rename
,copy
,unlink
) entre sí para ganar flexibilidad y promisify todo, por supuesto:moveFile
es solo una función de conveniencia y podemos aplicar las funciones por separado, cuando, por ejemplo, necesitamos un manejo de excepciones más fino.fuente
Shelljs es una solución muy útil.
comando: mv ([opciones,] origen, destino)
Opciones Disponibles:
-f: fuerza (comportamiento predeterminado)
-n: para evitar sobrescribir
fuente
Esta es una repetición de la respuesta de Teoman Shipahi con un nombre un poco menos ambiguo, y siguiendo el principio de diseño de la definición del código antes de intentar llamarlo. (Si bien el nodo le permite hacer lo contrario, no es una buena práctica poner el carro delante del caballo).
fuente
Con la ayuda de la URL a continuación, puede copiar o mover su archivo Origen ACTUAL al Origen de destino
fuente
Si está intentando mover o cambiar el nombre de un archivo fuente node.js, intente https://github.com/viruschidai/node-mv . Actualizará las referencias a ese archivo en todos los demás archivos.
fuente
Puede usar el
move-file
paquete npm:Primero instale el paquete:
Uso:
fuente