/*
* 一 util
* 是 node 里面一个工具模块 ,node 里面几乎所有的模块 都会用到 在这个模块
* 功能:
* 1 实现继承 这是主要功能
* 2 实现对象的完整输出
* 3 实现判断数据类型
*
*/
//引入工具类
var util = require("util");
function Parent(){
//继承Parent函数内的内容 为内部继承
this.name = "爸爸";
this.age = "50";
this.sayHello = function(){
console.log("hello");
}
}
//继承Parent的外加属性 为外部继承
Parent.prototype.getName = function(){
console.log(this.name);
}
function Child(){
//不使用inherits实现继承
Parent.call(this);
}
//实现child继承parent
// 工具类 util 里面的inherits 只能继承原型链(prototype)的方法和属性,无法继承类自有(直接写在类里面的)的方法和属性
util.inherits(Child,Parent);
console.log(Child)
/*
*path模块
*
* 功能:格式规范化路径
*
*/
//引入模块
var path = require("path");
var str = "../d\/d/fg/gg//.l";
//格式化不规范的路径
console.log(path.normalize(str));
//拼接路径
var res = path.join("s/b/c/d","../f");
console.log(res);
/**fs模块 * 1 操作的文件 * 2 操作目录*//**文件部分(都有同步和异步的区分 这里只讨论异步)*/var fs = require("fs");//1 读取文件//fs.readFile("1.txt","utf-8",function(error,data){// if(error){// //console.log("读取文件失败");// return console.error(error);// }else{// console.log(data);// }//}) //2 写入文件//参数:1 路径 2 文件内容 3 可选参数(文件内容的信息) 4 回调函数 //对于参数1,如果路径不存在 会创建新的文件,如果存在会在原文件写入内容 //fs.writeFile("lxl.txt","hello world",{ // flag:"a",//a不会覆盖上一次运行结果 w覆盖上一次运行结果 // encoding:"utf-8" //},function(error){ // //});// 2 写入文件的第二种方式//fs.appendFile("hhh.txt","真的假的?",function(error,data){//append拼接 默认为 a 的方式////}); //1 fs本身没有提供拷贝方法,自己实现一个//function Copy(src,desc){// fs.readFile(src,"utf-8",function(error,data){// if(error){//// }else{// // 读取成功,写入新文件// fs.writeFile(desc,data,{flag:"w"},function(error){//// })// }// })//}////Copy("lxl.txt","ssss.txt"); //目录操作部分//1.读取目录 fs.readdir("dir1",function(err,files){ if(err){ console.log("读取失败") }else{ console.log(files); } });//2.创建目录 fs.mkdir("dir2",0777,function(error){ if (error){ console.log("创建文件夹失败"); }else{ console.log("创建文件夹success"); } });//3.判断文件或者文件夹是否存在 fs.exists("1.jpg",function(exist){ console.log(exist); })//4.修改文件名 fs.rename("1.jpg","2.jpg",function(err){ if (err){ console.log("修改失败"); }else{ } })
/*** 前面的文件处理方式(主要指读取数据和写入数据的方法,针对的都是小文件).* 而对于大数据处理,readile 和 writeFile处理起来都有一定的问题.* 大数据处理采用 stream 流的方式*/ //引入fs模块 var fs = require("fs");//创建读取的数据流 var read = fs.createReadStream("video.mp4");//实现拷贝一个 video 的副本 var wr = fs.createWriteStream("副本video.mp4");//stream 之所以可以用来处理大数据,是因为它把数据分隔成一小块一小块来处理,并不是整个文件作为整体去处理.// 一小块(64kb)// var times = 0;// read.on("data",function(chunk){// times ++;// wr.write(chunk);//// })// read.on("end",function(){// console.log(times);// }) //pipe 是一个管道,用来连接输入流和输出流,读取的数据流,直接通过管道写入的写入流里面 read.pipe(wr);