A-A+

nodejs笔记(二)

2016年09月15日 nodejs 暂无评论 阅读 83 次

nodejs笔记(二)

var fs =require('fs');
fs.open('1','r',function(err,fd){
    if(err){
        console.log("文件打开失败")
    }else{
        //读取文件
        /*
        *fs.read(fd,buffer,offset,length,positon,callback
         *fd:open方法打开的文件后的返回编号
         * buffer:buffer 对象
         *offset :新内容添加到buffer中的起始位置
         * length: 添加到buffer中的内容的长度
         * positon:读取的文件中的起始位置
         * callback:回调
         * err
         * buffer 的长度
         * buffer对象
         */
        var  bf1 =new Buffer('12345678');
        console.log(bf1);
        fs.read(fd,bf1,0,4,null, function (err,len,newBuffer) {
                console.log(bf1);
            console.log(newBuffer);
            console.log(len);
        })
    }
})

fs.open('1','r+',function(err,fd){
    if(err){
 console.log("文件打开失败")
    }else{
        //写入文件时,open模式应该是读写方式
        /*
         *fs.write(fd,buffer,offset,length,positon,callback
         *fd:打开的文件
         * buffer:要写入的数据
         *offset :写入到到buffer中的数据起始位置
         * length: 要写入到buffer中的内容的长度
         * positon:fd中的起始位置
         * callback:回调
         * err
         * buffer 的长度
         * buffer对象
         */
        var bf = new Buffer('123');
        console.log(bf);
        fs.write(fd,bf,0,3,5, function () {
            console.info(arguments)
        })
        使用字符串
        fs.write(fd,'12222234',5,'utf-8', function () {
            console.info(arguments)
        });
        
        fs.close(fd,function(){
            console.log(arguments);
        })


    }
})

//writeFile 数据写,文件不存在,则新建,存在则覆盖
fs.writeFile('2.txt','hello,world',function(){
    console.log(arguments);
});

fs.appendFile('2.txt','-leo',function(){
    console.log(arguments);
});
var filename = '3.txt';
fs.exists(filename,function(isExists){
    console.log(isExists)

    if(!isExists){
        fs.writeFile(filename,'mive',function(err){
            if(err){
                console.log('出错了')
            }else{
                log(
                    '创建写入成功'
                )
            }
        })
    }else{
        fs.appendFile(filename,'-leo',function(err){
            if(err){
                console.log('出错了')
            }else{
                log(
                    '追加成功'
                )
            }
        })
    }

})
//上面内容相当于单用appendFile

if(!fs.existsSync(filename)){
  fs.writeFileSync(filename,'eee');
    log('文件创建成功')
}else{
    fs.appendFileSync(filename,'-leo')
    log('文件追加成功')
}


/*
* 文件读取
*
* */

fs.readFile(filename,function(err,data){
    //log(arguments);
    if(err){
        log('d去读失败')
    }else{
        log(data.toString())
    }
})


fs.unlink(filename,function(err){
    if(err){
        log('删除成功')
    }else{
        log('删除失败')
    }
});

fs.rename('2.txt','2new.txt',function(){
    log(arguments)
})

//文件状态
fs.stat('2new.txt',function(){
    log(arguments)
})

//文件状态监听

fs.watch('2new.txt',function(event,fn){
    log(event);
    if(fn){
        log('fn'+'发生了什么改变')
    }else{
        log("失败")
    }
})

//文件夹操作
/**
 * fs.mkdir(path,[mode],callback)
 * @param obj
 */

fs.mkdir('./2',function(){
    log(arguments)
})

fs.rmdir('./2',function(){
    log(arguments)
})

fs.readdir('./',function(err,flieList){
    //log(flieList)
    flieList.forEach(function(f){
        fs.stat(f,function(err,info){
            //log(arguments)
            switch (info.mode){
                case 16822:
                    log('[文件夹]'+f);
                    break;
                case 33206:
                    log('[文件]'+f);
                    break;
                default:
                    log('[其他类型]'+f);
                    break;
            }
        });
    })
})


function log(obj){
    console.log(obj);
}

function log(obj){
    console.log(obj);
}

/***
 * 自动化创建
 *
 */
var projectData={
    name:"project",
    'fileData':[
        {
            'name':"css",
            'type':'dir'
        },
        {
            'name':"js",
            'type':'dir'
        },
        {
            'name':"images",
            'type':'dir'
        },
        {
            'name':"index.html",
            'type':'file',
           'content':"<html>nt<head><title>新项目</title></head><body><h1>Hello world!</h1></body></html>"
        }
    ]
};
var fs = require('fs');
if(projectData.name){
    fs.mkdirSync(projectData.name);
    var fileData = projectData.fileData;
    if(fileData){
        fileData.forEach(function(f){
            f.path =projectData.name +'/'+ f.name;
            f.content = f.content || "";
            switch (f.type){
                case 'dir':
                    fs.mkdirSync(f.path);
                    break;
                case 'file':
                    fs.writeFileSync(f.path, f.content);
                    break;
                default:
                    break;
            }
        })
    }
}

/**
 * 合并
 * */

var fs = require('fs');
var filedir ='./project/source';
fs.watch(filedir,function(ev,file){
   // log(arguments);
    //console.log(ev+'/'+file); //这里不需要判断file是否有内容
    //只要有一个文件发生了变化,我们就需要对这个文件夹下的所有文件进行读取,并合并
    fs.readdir(filedir,function(err,dataList){
        var arr =[];
        dataList.forEach(function(f){
            if(f){
                var info = fs.statSync(filedir+'/'+f);
                //log(info);
                if(info.mode == 33206){
                    arr.push(filedir+'/'+f)
                }
            }
        });
        //    //读取数组中的问题件内容,并合并
        var content ='';
        arr.forEach(function(f){
            var c = fs.readFileSync(f);
            //log(c);
            content += c.toString()+'n';
        });
        log(content);
        fs.writeFileSync('./index.js',content);
    })
});
/*
 * http://www.baidu.com
 *
 * 1.用户通过浏览器发送一个http的请求到指定的主机
 * 2.服务器接收到该请求,对该请求进行分析和处理
 * 3.服务器处理完成以后,返回对应的数据到用户机器
 * 4.浏览器接收服务器返回的数据,并根据接收到的进行分析和处理
 *
 * 客户端    服务端
 * 由客户端发送一个http请求到指定的服务端 -> 服务端接收并处理请求 -> 返回数据到客户端
 *
 * */

/*
 * 搭建一个http的服务器,用于处理用户发送的http请求
 * 需要使用node提供的一个模块, http
 * */

function log(obj) {
    console.log(obj);
}
//
////加载一个http模块
var http = require('http');
////通过http模块下的createServer 创建并返回一个web服务器对象
var server = http.createServer();

server.on('error',function(err){
    log(err)
});
server.on('listening',function(){
    log('linsening....');
})

server.on('request',function(req,res){
    log('有客户端发送请求');
    log(req);
   // res.write('hello');
    res.setHeader('mv','dd')

    res.writeHead(200,'sucess',{
        //'content-type':'text/html'
        'content-type':'text/plain'
    });
    res.write('<h1>11</h1>');
    res.end();
});
server.listen(80,'localhost');

//log(server.address())
server.listen(80, 'localhost');

/*
 * server 2
 * */

//url 模块
var url = require('url');
server.on('request', function (req, res) {
    //req.url  访问路径
    //?后面的部分 query string
    log(req.url);
    var urlStr = url.parse(req.url);
    log(urlStr);
    switch (urlStr.pathname){
        case '/':
            res.writeHead(200,{
                'content-type': 'text/html;charset=utf-8'
            });
            res.end('<h1>首页</h1>');
            break;
        case '/user':
            res.writeHead(200,{
                'content-type': 'text/html;charset=utf-8'
            });
            res.end('<h1>用户首页</h1>')
            break;
        default:
            res.writeHead(404,{
                'content-type': 'text/html;charset=utf-8'
            });
            res.end('<h1>页面不存在</h1>')
            break;

    }

});

server.listen(80, 'localhost');

/*
 *
 * server3
 * */

var fs = require('fs');
var url = require('url');
var htmlDir = __dirname + '/html/';
var querystring = require('querystring');
server.on('request', function (req, res) {
    var urlStr = url.parse(req.url);
    switch (urlStr.pathname) {
        case '/':
            setPath(htmlDir + 'index.html', req, res);
            break;
        case '/user':
            setPath(htmlDir + 'user.html', req, res);
            break;
        case '/login':
            setPath(htmlDir + 'login.html', req, res);
            break;
        case '/login/check':
            //如果是get方式的数据
            //log(req.method);
            //log(querystring.parse(urlStr.query));


            //如果是post方式的数据的处理
            if(req.method.toUpperCase() =='POST'){
                var str='';
                req.on('http://localhost/login',function(chunk){
                    str+=chunk;
                });
                req.on('end',function(){
                    log(str);
                    //log(querystring.parse(str))
                })
            }
            break;
        default:
            setPath(htmlDir + '404.html', req, res);
            break;

    }

});

function setPath(file, req, res) {
    fs.readFile(file, function (err, data) {
        if (err) {
            res.writeHead(404, {
                'content-type': 'text/html;charset=utf-8'
            });
            res.end('<h1>页面不存在</h1>')
        }else{
            res.writeHead(200, {
                'content-type': 'text/html;charset=utf-8'
            });
            res.end(data);
        }
    })
}


server.listen(80, 'localhost');

 

标签:

给我留言

Copyright © web前端技术开发个人博客 保留所有权利  京ICP备14060653号 Theme  Ality

用户登录