开始nodejs+express的学习+实践(4)

1.nodejs中fs文件系统模块学习

主要了解node对文件的操作,我们可以大概总结针对文件系统的大致操作有什么?

1.文件打开

2.文件关闭

3.文件读取

4.文件写入

5.删除文件

6.移动文件

7复制文件

7.创建目录

8.删除目录

......

等等吧!肯定还好很多,我们知道node是异步非阻塞处理,这些操作除了我们概念中同步方式肯定还会有异步方式,也就是同一个处理会有2个方法共选择。

fs模块手册地址:http://nodejs.cn/doc/nodejs/fs.html 里面介绍了所有处理,我们在项目下做测试操作。

很多都是对文件的操作,而我们的项目是web形式,除了读取可以把读取的数据显示出来,其他的结果情况我们需要到目录去查看。

==我们加入路由,get的“/fs”处理,我们的引擎页面fs.html,我们把fs的处理放在路由下,只要访问地址,就会执行我们的fs操作,对应查看就行了。

fs.html

<!DOCTYPE html>
<html>
  <head>
    <title>fs</title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1>fs</h1>
  </body>
</html>

路由index.js加入:

    app.get('/fs',  function(req, res){
        res.render('fs');
    });

访问时,里面要写入fs的操作,我们运行,地址转到“http://localhost:1234/fs”,会看到“fs”。

我么先在app.js同级创建文件夹“fs”,里面放入1.txt,2.txt,3.txt,1为空,2、3随便写一些数据,提供文件处理操作。

开始nodejs+express的学习+实践(4)_第1张图片

 

1..路由修改:

    app.get('/fs',  function(req, res){
        res.render('fs');
        fs.appendFile('./fs/1.txt', 'data to append', 'utf8', function(){});
    });

往1.txt写数据,编码utf8,我们重启运行,然后查看1.txt内容:

开始nodejs+express的学习+实践(4)_第2张图片

 结论:fs.appendFile(file, data[, options], callback),参数1要写入那个文件,2写入数据内容,可指定编码,默认utf-8,3回调处理。

我们要根据测试目录修改file位置,我们是方法fs目录下。

同步不演示了,和异步同理。

2.路由修改

fs.chmod(path, mode, callback) 文件权限修改,

3.路由修改

    app.get('/fs',  function(req, res){
        fs.exists("./fs", function(exists){
            res.render('fs', { res:exists });
        });
    });

判断路径是否存在,我们把结果输出到页面,fs.html:

<!DOCTYPE html>
<html>
  <head>
    <title>fs</title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1>fs</h1>
    <h1><%= res %></h1>
  </body>
</html>

重启,运行,

开始nodejs+express的学习+实践(4)_第3张图片

改成不存在的路径,测试会输出false。

    app.get('/fs',  function(req, res){
        fs.exists("./ff", function(exists){
            res.render('fs', { res:exists });
        });
    });

fs.exists(path, callback) 路径是否存在判断,回调会返回true或者false

4.路由修改

    app.get('/fs',  function(req, res){
        fs.mkdir("./fs/me", function(){
            res.render('fs', { res:exists });
        })
    });

测试,结果创建目录

开始nodejs+express的学习+实践(4)_第4张图片

fs.mkdir(path[, mode], callback)  会判断创建目录是否存在,我们是在fs下创建me目录

5.路由修改

    app.get('/fs',  function(req, res){
        fs.readFile('./fs/2.txt', 'utf8', function(err, data){
            if (err) throw err;
            res.render('fs', { res:data });
        });
    });

我们测试,运行

 

开始nodejs+express的学习+实践(4)_第5张图片

开始nodejs+express的学习+实践(4)_第6张图片

中文乱码,好吧,觉得中文会出问题,我们把2.txt打开,改为utf-8保存,测试运行:

开始nodejs+express的学习+实践(4)_第7张图片

会发现,中文正常显示了。

fs.readFile(file[, options], callback)  回调会返回读取的结果。

6.路由修改

    app.get('/fs',  function(req, res){
        fs.rename("./fs/1.txt", "./fs/me/11.txt", function(){})
    });

移动方法可以修改名称,测试运行。

 

开始nodejs+express的学习+实践(4)_第8张图片

开始nodejs+express的学习+实践(4)_第9张图片

所在目录和名称都被修改了,这个是异步处理,同步的一样。

fs.rename(oldPath, newPath, callback) 参数1指定要移动文件路径,2执行移动到的位置和新名字。

7.路由修改

    app.get('/fs',  function(req, res){
        fs.rmdir("./fs/te", function(){})
    });

我们在fs下创建te文件夹

开始nodejs+express的学习+实践(4)_第10张图片

运行后发现被删除,当我们要删除me目录,发现是不可行的,因为me下存在文件,说明删除目录只能删除空目录。

fs.rmdir(path, callback) 删除目录方法,不过只能删除空目录。

8.路由修改

    app.get('/fs',  function(req, res){
        fs.unlink("./fs/2.txt", function(){})
    });

运行,我们会发现2.txt被删除,文件删除方法。

开始nodejs+express的学习+实践(4)_第11张图片

fs.unlink(path, callback) 参数1,删除文件路径。

9.路由修改

    app.get('/fs',  function(req, res){
        fs.writeFile('./fs/me/1.txt', 'read me','utf8', function (err) {
            if (err) throw err;
        });
    });

写入内容,不存在会新建文件,并且写入,

我们运行,会发现me下创建了1.txt并且写入了内容,

fs.writeFile(file, data[, options], callback)

除了这些还有很多操作,可以百度文件打开结合读取或者写入的处理。不过我们常用的就是:

1.移动文件(上传表单)

2.删除文件(删除信息删除图片)

3.文件和目录是否存在(防止错误发生)

4.创建目录(针对每个用户创建单一目录保存内容)2.nodejs中crypto加密模块学习

2.nodejs中crypto加密模块学习

crypto模块作为加密模块,针对web开发,主要就是密码的加密处理。

crypto手册地址:http://nodejs.cn/doc/nodejs/crypto.html

index.js路由文件先引入crypto,与引入fs模块同理

var crypto = require('crypto');

路由加入:

    app.get('/crypto',  function(req, res){
        res.render('crypto', { res:"crypto" });
    });

crypto.html:

<!DOCTYPE html>
<html>
  <head>
    <title>crypto</title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1><%= res %></h1>
  </body>
</html>

地址:http://localhost:1234/crypto 会看见crypto几个大字。

我们引用加密和使用md5加密:

    app.get('/crypto',  function(req, res){
        var pass="admin";
        var md5 = crypto.createHash('md5');
        var mpass=md5.update(pass).digest('hex');
        var rmpass=mpass.substring(2);
        res.render('crypto', { res:pass,resm:mpass,resrm:rmpass });
    });

crypto.html,显示三种结果:

<!DOCTYPE html>
<html>
  <head>
    <title>crypto</title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1><%= res %></h1>
    <h1><%= resm %></h1>
    <h1><%= resrm %></h1>
  </body>
</html>

我们运行查看结果:

开始nodejs+express的学习+实践(4)_第12张图片

 

1是为加密内容

2是加密的内容

3是加密后进行裁剪的内容

我们在加密后在做裁剪是不固定操作的,我们从第3位开始,同样也可以从其他位置,更难猜出密码。

3.nodejs中全局对象的学习

手册地址:http://nodejs.cn/doc/nodejs/globals.html

我们加入路由

    app.get('/globals',  function(req, res){
        res.render('crypto', { res:"globals" });
    });

globals.html:

<!DOCTYPE html>
<html>
  <head>
    <title>globals</title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1><%= res %></h1>
  </body>
</html>

运行:http://localhost:1234/globals,看见globals几个大字。

我们输出几个全局对象内容,看看结果,修改路由文件:

    app.get('/globals',  function(req, res){
        res.render('globals', { res:__dirname+":"+__filename });
    });

 

结果:

开始nodejs+express的学习+实践(4)_第13张图片

index.js所在的目录和目录+名称。

你可能感兴趣的:(开始nodejs+express的学习+实践(4))