2011-02-12 18 views
25

Node.js में किसी फ़ाइल को कॉपी करने के लिए कैसे करें?फ़ाइल की प्रतिलिपि कैसे करें?

उदाहरण

+ /old 
|- image.png 
+ /new 

मैं 'नए' निर्देशिका के लिए 'पुराने' से image1.png प्रतिलिपि बनाना चाहते हैं।

यह काम नहीं करता है।

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(); 
}); 

उत्तर के लिए धन्यवाद!

+0

यहां कुछ भी? http://nodejs.org/api.html#fs-readstream-152 http://nodejs.org/api.html#fs-writestream-154 – mplungjan

+0

@ mplungjan मैंने अभी अपना प्रश्न अपडेट किया है। –

+0

ने अभी मेरी टिप्पणी अपडेट की है;) – mplungjan

उत्तर

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

क्या यह आपके लिए काम करता है? मैं नोड v0.4.0 का उपयोग करता हूं और 'न्यूफाइल' में शून्य केबी है। – Baggz

+3

आपको फ़ाइल के 'खुले' ईवेंट के लिए प्रतीक्षा करनी होगी। (मैंने इसे अभी जोड़ा)। –

+0

एक साधारण 'आवश्यकता (' उपयोग ')। पंप (पुरानीफाइल, नई फ़ाइल);' मेरे लिए काम किया (खुली घटना की प्रतीक्षा नहीं) –

14

वर्तमान में पसंदीदा तरीका:

oldFile.pipe(newFile); 
+0

और मुझे लगता है कि 'oldFile.on (' end ', function() {console.log (' ready ')}); ' –

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

यह ** उसी विभाजन के बीच ** चल रहा है (नामकरण) के लिए है। ओपी ** ** एक फाइल की प्रतिलिपि ** के लिए पूछ रहा है। –

6

आप syncronously यह काम कर करना चाहते हैं, अभी-अभी पढ़ा और फिर फ़ाइल को सीधे लिखें:

var copyFileSync = function(srcFile, destFile, encoding) { 
    var content = fs.readFileSync(srcFile, encoding); 
    fs.writeFileSync(destFile, content, encoding); 
} 
बेशक

, त्रुटि प्रबंधन और सामान हमेशा एक अच्छा विचार है!

संबंधित मुद्दे