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('创建目录成功')
    });
    
  • 相关阅读:
    POJ 2018 二分
    873. Length of Longest Fibonacci Subsequence
    847. Shortest Path Visiting All Nodes
    838. Push Dominoes
    813. Largest Sum of Averages
    801. Minimum Swaps To Make Sequences Increasing
    790. Domino and Tromino Tiling
    764. Largest Plus Sign
    Weekly Contest 128
    746. Min Cost Climbing Stairs
  • 原文地址:https://www.cnblogs.com/yeziTesting/p/7136229.html
Copyright © 2011-2022 走看看