NodeJS - fs
2016-01-23 16:54
459 查看
NodeJs 中提供了很多File System(文件系统的API), 又是跨平台的, 以下实例完成一些基本的文件操作:比如创建,读(使用Stream),写,移动,删除文件,各位同学可以作为参考。
/* 1. Create a file 2. Write some data, 5000 lines 3. Rename it 4. Move it to a non-existing sub folder. 5. Read whole file and print 6. Read file by stream and print each chunk's content and size. 7. Clear all conent. 8. Write your name in it 100 times and print it. 9. Delete it */ var fs = require('fs'); var content = "Hello world."; var folderName = "exam"; var fileName = "exam.log"; var badFileName = "examBad.log"; var encoding = "utf-8"; var linesOfData = 10000; // 1. Create a file console.log('1. Create a file'); fs.writeFileSync(fileName, `${1}: ${content} \r\n`, encoding); // 2. Write some data, 5000 lines console.log('\r\n2. Write some data, 5000 lines'); for(var i = 2 ; i <= linesOfData; i++){ fs.appendFileSync(fileName, `${i}: ${content} \r\n`, encoding); } console.log("Write file done."); // 3. Rename it console.log('\r\n3. Rename it'); fs.renameSync(fileName, "helloWorld.log"); console.log('Rename file done.'); fs.renameSync("helloWorld.log", fileName); // 4. Move it to a non-existing sub folder. console.log('\r\n4. Move it to a non-existing sub folder.'); if(fs.existsSync(folderName)){ console.log(`Folder ${folderName} already exists.`); }else{ fs.mkdirSync(folderName); console.log(`Folder create done: ${folderName} created.`); } fs.renameSync(fileName, folderName + '/' + fileName); console.log(`Move file done: file '${fileName}' was moved to '${folderName}/${fileName}'`); fs.renameSync(folderName + '/' + fileName, fileName); console.log(`Move file back: file '${folderName}/${fileName}' was moved to '${fileName}'`); // 5. Read whole file and print console.log('\r\n5. Read whole file and print.'); try{ var data = fs.readFileSync(fileName, encoding); console.log(`File read done: Length:${data.length}`); }catch(err){ console.log(err); } // 6. Read file by stream and print each chunk's content and size. console.log('\r\n6. Read file by stream and print each chunk-s content and size.'); var stream = fs.createReadStream(fileName); var data = []; // Async call: data may display after all execution. stream.once('data', function(){ console.log(`Start reading file: '${fileName}'`); }); // Async call: data may display after all execution. stream.on('data', function(chunk){ data.push(chunk); console.log(`Chunk read size: ${chunk.length}`); }) // Async call: data may display after all execution. stream.on('end', function(){ console.log(`Read file '${fileName}' done. Total size:${data.join('').length}`); }) // 7. Clear all conent. console.log('\r\n7. Clear all conent.'); fs.writeFileSync(fileName, ''); console.log('File content was cleared.'); // 8. Write your name in it 100 times and print it. console.log('\r\n8. Write your name in it 100 times and print it.'); for(var i = 0 ; i < 100 ; i++) { fs.appendFileSync(fileName, `${i} Cui`); } // Async call: data may display after all execution. fs.readFileSync(fileName, encoding, function(err, data){ if(err) console.log(err); else console.log(data) }); // 9. Delete it console.log('\r\n9. Delete it.'); fs.unlink(fileName, function(err){ if(err) console.log(err); else console.log(`File '${fileName}' was deleted.`); }) /* Async call will crush fs.writeFile(badFileName, `${1}: ${content} \r\n`, encoding, function(err){ if(err){ console.log(err); } }); for(var i = 2; i < linesOfData; i++){ var j = i; var dataToWrite = `${j}: ${content} \r\n`; fs.appendFile(badFileName, dataToWrite, encoding, function(err){ if(err){ console.log(err); }else{ console.log(`Write data:${dataToWrite}`); } }); } */
相关文章推荐
- Express开发(一):Node.js、Express安装
- nodejs按业务逻辑组织路由器
- nodejs路由路径参数
- 使用CSLoader获取Node后再获取精灵失败
- nodejs的中间件
- leetcode222---Count Complete Tree Nodes(求完全二叉树节点数)
- 论Node在构建超媒体API中的作用
- [LeetCode24]Swap Nodes in Pairs
- 一张图告诉你,只会NodeJS还远远不够!
- NodeJS - NPM - Edge - Connect NodeJs and .Net
- 快慢指针-----Remove Nth Node From End of List
- Node.js中AES加密和其它语言不一致问题解决办法
- node.js乱码问题【WebStorm环境】
- NodeJs session中间件 及应用(简单的登录与登出)
- storm集成kafka报错【KeeperErrorCode = NoNode for /kafka/brokers/topics/test/partitions】
- 用node-inspector调试Node.js(转自NOANYLOVE'S BLOG)
- [译]Node.js 框架比较: Express vs. Koa vs. Hapi
- Umbraco(2)- Creating Your First Template and Content Node
- Umbraco(2)- Creating Your First Template and Content Node
- JavaScript操作DOM元素的childNodes和children区别