/*
* 一 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);
下面是我的公眾號,大家可以關注一下,可以一起學習,一起進步:

