Como posso mover arquivos (como o shell de comando mv) no node.js? Existe algum método para isso ou devo ler um arquivo, gravar em um novo arquivo e remover o arquivo mais antigo?
151
De acordo com o comentário seppo0010, usei a função renomear para fazer isso.
http://nodejs.org/docs/latest/api/fs.html#fs_fs_rename_oldpath_newpath_callback
fs.rename (oldPath, newPath, retorno de chamada)
Adicionado em: v0.0.2
oldPath <String> | <Buffer> newPath <String> | <Buffer> callback <Function>
Renomeação assíncrona (2). Nenhum argumento além de uma possível exceção é fornecido ao retorno de chamada de conclusão.
Este exemplo foi retirado de: Node.js em ação
fonte
Usando nodejs nativamente
(OBSERVAÇÃO: "Isso não funcionará se você estiver cruzando partições ou usando um sistema de arquivos virtual que não suporta arquivos em movimento. [...]" - Flavien Volken 2 de setembro de '15 às 12:50 ")
fonte
Use o módulo do nó mv , que primeiro tentará fazer um
fs.rename
e, em seguida, fará o fallback para copiar e depois desvincular.fonte
mv
módulo de nó. Eu gosto de usar o npm para instalar;npm install mv --save-dev
; aqui está o link npmutil.pump
foi descontinuado no nó 0.10 e gera mensagem de avisoPortanto, a solução para copiar arquivos usando fluxos é:
fonte
Usando a função renomear:
Onde
assumindo que você deseja manter o nome do arquivo inalterado.
fonte
O
fs-extra
módulo permite que você faça isso com seumove()
método. Eu já o implementei e funciona bem se você deseja mover completamente um arquivo de um diretório para outro - ou seja. removendo o arquivo do diretório de origem. Deve funcionar para os casos mais básicos.fonte
Aqui está um exemplo usando util.pump, de >> Como mover o arquivo a para uma partição ou dispositivo diferente no Node.js.
fonte
fs.rename()
(em um volume renomear um arquivo e movê-lo é a mesma coisa).Usando promessas para versões de nó maiores que 8.0.0:
fonte
fs.rename
não funcionará se você estiver em um ambiente Docker com volumes.async
declaração àmoveThem
função.Apenas meus 2 centavos, conforme indicado na resposta acima : O método copy () não deve ser usado como está para copiar arquivos sem um pequeno ajuste:
A função de cópia envolvida em uma promessa:
No entanto, lembre-se de que o sistema de arquivos pode falhar se a pasta de destino não existir.
fonte
Gostaria de separar todas as funções envolvidas (ie
rename
,copy
,unlink
) um do outro para ganhar flexibilidade e tudo promisify, é claro:moveFile
é apenas uma função de conveniência e podemos aplicar as funções separadamente, quando, por exemplo, precisamos de um tratamento de exceção mais refinado.fonte
Shelljs é uma solução muito útil.
comando: mv ([opções,] origem, destino)
Opções disponíveis:
-f: force (comportamento padrão)
-n: para evitar a substituição
fonte
essa é uma repetição da resposta de teoman shipahi com um nome um pouco menos ambíguo e seguindo o princípio de design da definição do código antes de você tentar chamá-lo. (Embora o nó permita que você faça o contrário, não é uma boa prática colocar a carroça diante do cavalo.)
fonte
Com a ajuda do URL abaixo, você pode copiar ou mover o arquivo Origem atual para a Origem de destino
fonte
Se você estiver tentando mover ou renomear um arquivo de origem node.js., tente este https://github.com/viruschidai/node-mv . Ele atualizará as referências a esse arquivo em todos os outros arquivos.
fonte
Você pode usar o
move-file
pacote npm:Primeiro instale o pacote:
Uso:
fonte