使用node.js更改文件

我有一个如下所示的文本文件:

./4F6cFLnAAFc.png ./4Flj9plmKGQ.png ./4fQeHtSdw80.png ./4I9iibPLdBw.png ./4J-dRA3MGc8.png ./4mdEsouIXGM.png ./4-_-wQc3EGE.png ./595Tiga1gIg.png ./60u_ctp6UIw.png ./64bH_27Ehoc.png ./64_ZfIemRGM.png ./66pQLO--Ghk.png ./69rDtSpshAw.png ./69-YUSazuic.png 

我想replace. 在每行使用node.js的'myString'的开头。 所以每个最终会看起来像: myString/4F6cFLnAAFc.png

我正在尝试使用正则expression式,但我怀疑它可以使用读取和写入stream。

 var fs = require('fs'); fs.readFile('filelist.txt', 'utf-8', function(err, data){ if (err) throw err; console.log(typeof(data)); // string data.replace(/\.\/+/, 'myString'); }); 

什么正则expression式将工作或什么是使用节点编辑此文件的最佳方式?

这里有两种select同步或asynchronous取决于你想要什么。

 var fs = require('fs'); function readWriteAsync() { fs.readFile('filelist.txt', 'utf-8', function(err, data){ if (err) throw err; var newValue = data.replace(/^\./gim, 'myString'); fs.writeFile('filelistAsync.txt', newValue, 'utf-8', function (err) { if (err) throw err; console.log('filelistAsync complete'); }); }); } function readWriteSync() { var data = fs.readFileSync('filelist.txt', 'utf-8'); var newValue = data.replace(/^\./gim, 'myString'); fs.writeFileSync('filelistSync.txt', newValue, 'utf-8'); console.log('readFileSync complete'); } readWriteAsync(); readWriteSync(); 

这个正则expression式应该可以工作:/ /^\.(.+)/gm

它为以句号( ^\. )开头的所有行执行全局多行匹配( /gm ),捕获句点( (.+) )之后的任何内容,并用“myString”replace整个string获得的价值( $1 )。

 var fs = require('fs'), fileList = '/filelist.txt'; fs.readFile(fileList, function(err, data) { if(err) throw err; data = data.toString(); data = data.replace(/^\.(.+)/gm, 'myString$1'); fs.writeFile(fileList, data, function(err) { err || console.log('Data replaced \n', data); }); });