zoukankan      html  css  js  c++  java
  • 【08】node 之 fs文件

    var fs = require("fs");//fs 系统文件模块,对文件进行操作.Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。

    1.文件读取

    var fs = require("fs");
     fs.readFile('./a.txt',function(err,data){
         if(err){
             return console.error(err);
         }
        console.log("异步");
        console.log(data.toString());
     })
     var dataSyn = fs.readFileSync('./a.txt');
     console.log("同步")
     console.log(dataSyn.toString())

    运行结果:

    同步
    a.txt文件
    异步
    a.txt文件

    2.文件信息

    语法

    以下为通过异步模式获取文件信息的语法格式:

    fs.stat(path, callback)

    参数

    参数使用说明如下:

    path - 文件路径。

    callback - 回调函数,带有两个参数如:(err, stats), stats 是 fs.Stats 对象。

    fs.stat(path)执行后,会将stats类的实例返回给其回调函数。可以通过stats类中的

    实例:

    var fs = require("fs");
     fs.stat('./a.txt',function(err,data){
         if(err){
             return console.error(err);
         }
        console.log("异步");
        console.log(data);
     })
     var dataSyn = fs.statSync('./a.txt');
      console.log("同步")
     console.log(dataSyn)

    运行结果中stat信息:

    ino: 3940649673949397,
    size: 11,    ---文件大小,kb
    blocks: undefined,
    atime: 2017-07-08T02:25:14.894Z,
    mtime: 2017-07-08T02:27:23.823Z,
    ctime: 2017-07-08T02:27:23.823Z,
    birthtime: 2017-07-08T02:25:14.894Z  ---文件产生时间

    常用到的方法:

    dataSycn.birthtime

    dataSycn.size

    dataSyn.isDirectory()

    3.写文件

    语法

    以下为异步模式下写入文件的语法格式:

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

    如果文件存在,该方法写入的内容会覆盖旧的文件内容。

    参数

    参数使用说明如下:

    path - 文件路径。

    data - 要写入文件的数据,可以是 String(字符串) 或 Buffer(流) 对象。

    options - 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 'w'

    callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。

    实例:

    // fs.writeFile(filename,data,[options],callback);
    var w_data = '这是一段通过fs.writeFile函数写入的内容;
    ';
    var w_data = new Buffer(w_data);
    
    /**
     * filename, 必选参数,文件名
     * data, 写入的数据,可以字符或一个Buffer对象
     * [options],flag,mode(权限),encoding
     * callback 读取文件后的回调函数,参数默认第一个err,第二个data 数据
     */
    
    fs.writeFile(__dirname + '/test.txt', w_data, {flag: 'a'}, function (err) {
       if(err) {
        console.error(err);
        } else {
           console.log('写入成功');
        }
    });

    追加方式写文件

    // fs.appendFile(filename,data,[options],callback);
    
    fs.appendFile(__dirname + '/test.txt', '使用fs.appendFile追加文件内容', function () {
      console.log('追加内容完成');
    });
    

    4.删除文件

    语法

    以下为删除文件的语法格式:

    fs.unlink(path, callback)

    参数

    参数使用说明如下:

    path - 文件路径。

    callback - 回调函数,没有参数。

    实例

    var fs = require("fs");
    
    console.log("准备删除文件!");
    fs.unlink('./my.txt', function(err) {
       if (err) {
           return ;
       }
       console.log("文件删除成功!");
    });

    5.删除文件夹

    //获取当前目录下面所有的文件及文件夹
    fs.readdir(".",function(err,files){
            console.log(files);
    });

    删除空文件

    语法
    以下为删除文件的语法格式:
    fs.rmdir(path, callback)

    参数
    参数使用说明如下:
    path - 文件夹路径。
    callback - 回调函数,没有参数。

    var fs = require(“fs”);
    fs.rmdir('./aaa', function(err) {
       if (err) {
           return ;
       }
       console.log("文件夹删除成功!");
    });

    删除有内容的文件

    /删除一个非空的文件夹(递归)
    function delDir(dirPath){
        //删除目录,必须先删除目录中所有内容(文件和文件夹)。
        //获取目录下面的所有内容。
        var files = fs.readdirSync(dirPath);
    
        //遍历文件列表
        for (var i=0;i<files.length;i++){
            //文件名
            var file = files[i];
            //拼接路径(目录路径+文件名)
            var path = dirPath+"/"+file;
    
            //获取path对应文件信息对象
            var stat = fs.statSync(path);
            //通过文件信息对象判断是否是有一个文件
            if(stat.isFile()){//文件
                fs.unlinkSync(path);
            }else{//文件夹
                delDir(path);
            }
        }
    
        //删除文件夹
        fs.rmdirSync(dirPath);
    }
    
    delDir("./a");

    6.创建目录

    //使用fs.mkdir创建目录
    //fs.mkdir(path, [mode], callback);
    
    /**
     * path, 被创建目录的完整路径及目录名;
     * [mode], 目录权限,默认0777
     * [callback(err)], 创建完目录回调函数,err错误对象
     */
    
    fs.mkdir(__dirname + '/fsDir', function (err) {
      if(err)
        throw err;
      console.log('创建目录成功')
    });
    
  • 相关阅读:
    数据结构之利用递归解决八皇后问题
    SpringBoot注解大全
    shiro框架中出现的错误There was an unexpected error (type=Unauthorized, status=401).
    shiro权限控制
    shiro的整合“心路历程”
    _T宏的使用
    根据文件的路径 分割文件名 文件后缀
    将选中的图片文件以图片形式 (显示在对话框内)或(直接发送出去)
    对话框内粘贴图片文件会直接发送,改为粘贴图片后直接将图片显示在对话内。
    数据库按日期查询,右侧日期内的数据无法现实问题。
  • 原文地址:https://www.cnblogs.com/yeziTesting/p/7136229.html
Copyright © 2011-2022 走看看