[file] node.js에서 파일을 어떻게 이동합니까?

node.js에서 mv 명령 쉘과 같은 파일을 어떻게 이동합니까? 그 방법이 있습니까? 아니면 파일을 읽고 새 파일에 쓰고 오래된 파일을 제거해야합니까?



답변

seppo0010 주석에 따르면 이름 바꾸기 기능을 사용했습니다.

http://nodejs.org/docs/latest/api/fs.html#fs_fs_rename_oldpath_newpath_callback

fs.rename (oldPath, newPath, 콜백)

추가 : v0.0.2

oldPath <String> | <Buffer>
newPath <String> | <Buffer>
callback <Function>

비동기 이름 바꾸기 (2). 완료 콜백에는 가능한 예외 이외의 인수가 제공되지 않습니다.


답변

이 예제는 Node.js in Action 에서 가져온 것입니다.

가능한 경우 이름을 바꾸거나 복사로 이동하는 move () 함수

var fs = require('fs');

module.exports = function move(oldPath, newPath, callback) {

    fs.rename(oldPath, newPath, function (err) {
        if (err) {
            if (err.code === 'EXDEV') {
                copy();
            } else {
                callback(err);
            }
            return;
        }
        callback();
    });

    function copy() {
        var readStream = fs.createReadStream(oldPath);
        var writeStream = fs.createWriteStream(newPath);

        readStream.on('error', callback);
        writeStream.on('error', callback);

        readStream.on('close', function () {
            fs.unlink(oldPath, callback);
        });

        readStream.pipe(writeStream);
    }
}


답변

기본적으로 nodejs 사용

var fs = require('fs')

var oldPath = 'old/path/file.txt'
var newPath = 'new/path/file.txt'

fs.rename(oldPath, newPath, function (err) {
  if (err) throw err
  console.log('Successfully renamed - AKA moved!')
})

(참고 : “파티션을 가로 지르거나 파일 이동을 지원하지 않는 가상 파일 시스템을 사용하는 경우에는 작동하지 않습니다. […]” – Flavien Volken 9 월 2 일 15시 12 분 50 초 “


답변

먼저 mv 노드 모듈을 사용하여 fs.rename복사를 시도한 다음 연결을 끊으십시오.


답변

util.pump 노드 0.10에서 더 이상 사용되지 않으며 경고 메시지를 생성합니다.

 util.pump() is deprecated. Use readableStream.pipe() instead

따라서 스트림을 사용하여 파일을 복사하는 솔루션은 다음과 같습니다.

var source = fs.createReadStream('/path/to/source');
var dest = fs.createWriteStream('/path/to/dest');

source.pipe(dest);
source.on('end', function() { /* copied */ });
source.on('error', function(err) { /* error */ });


답변

이름 바꾸기 기능 사용 :

fs.rename(getFileName, __dirname + '/new_folder/' + getFileName); 

어디

getFilename = file.extension (old path)
__dirname + '/new_folder/' + getFileName

파일 이름을 변경하지 않고 유지한다고 가정합니다.


답변

fs-extra모듈은 그것의이 작업을 수행 할 수 있도록 move()하는 방법. 이미 구현했으며 파일을 한 디렉토리에서 다른 디렉토리로 완전히 이동하려는 경우 잘 작동합니다. 소스 디렉토리에서 파일을 제거합니다. 대부분의 기본 사례에서 작동합니다.

var fs = require('fs-extra')

fs.move('/tmp/somefile', '/tmp/does/not/exist/yet/somefile', function (err) {
 if (err) return console.error(err)
 console.log("success!")
})