2011-02-12 23 views
25

Dosya Node.js'de nasıl kopyalanır?Dosya nasıl kopyalanır?

Örnek

+ /old 
|- image.png 
+ /new 

ben 'yeni' dizinine 'eski' dan image1.png kopyalamak istediğiniz.

Bu işe yaramıyor.

newFile = fs.createWriteStream('./new/image2.png');  
oldFile = fs.createReadStream('./old/image1.png'); 

oldFile.addListener("data", function(chunk) { 
    newFile.write(chunk); 
}) 

oldFile.addListener("close",function() { 
    newFile.end(); 
}); 

Cevabınız için teşekkürler!

+0

Burada herhangi bir şey var mı? http://nodejs.org/api.html#fs-readstream-152 http://nodejs.org/api.html#fs-writestream-154 – mplungjan

+0

@mplungjan Soruyu yeni güncelledim. –

+0

sadece yorumumu güncelledi;) – mplungjan

cevap

7
newFile.once('open', function(fd){ 
    require('util').pump(oldFile, newFile); 
});  
+1

Bu sizin için çalışıyor mu? Node v0.4.0 kullanıyorum ve 'newFile' sıfır KB değerine sahip. – Baggz

+3

Yazılacak dosyanın 'açık' etkinliğini beklemeniz gerekir. (Bunu şimdi ekledim). –

+0

basit bir 'require' ('util') pompa (oldFile, newFile); 'benim için çalıştı (open olayı beklemeden) –

14

anda tercih edilen bir yol:

oldFile.pipe(newFile); 
+0

ve sanırım oldFile.on ('end', function() {console.log ('hazır')}); ' –

-3
fs.rename('./old/image1.png', './new/image2.png', function(err){ 
    if(err) console.log(err); 
    console.log("moved"); 
}); 
+0

Bu, aynı bölüm arasında ** taşıma ** (yeniden adlandırma) içindir. OP, ** bir dosyayı ** kopyalamayı istiyor. –

6

sen syncronously bu işi yapmak istiyorsanız, sadece okumak ve daha sonra dosyayı doğrudan yazma:

Tabii
var copyFileSync = function(srcFile, destFile, encoding) { 
    var content = fs.readFileSync(srcFile, encoding); 
    fs.writeFileSync(destFile, content, encoding); 
} 

, hata işleme ve malzeme her zaman iyi bir fikirdir!

İlgili konular