nodejs 判断是文件还是文件夹

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs 判断是文件还是文件夹相关的知识,希望对你有一定的参考价值。

参考技术A var fs = require("fs");
var stat = fs.lstatSync("./xx");
console.log(stat.isDirectory());
如果返回结果为true则为文件夹。本回答被提问者采纳

nodejs之fs模块

1、引入fs模块

const fs = require(‘fs‘);

2、常用方法

1、fs.stat 检测是文件还是目录

  • 检测文件or目录是否存在
  • 检测是文件还是目录
fs.stat(‘./test.html‘,(err,data)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log(data.isFile);
    console.log(data);
})

2、fs.mkdir 创建目录

fs.mkdir(‘./css‘,(err)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log("创建成功");
}) 

3、fs.readdir 读取目录

读取当前文件夹下面的文件及目录,不能读取子文件及子目录

fs.readdir("./css",(err,data)=>{
     if(err){
         console.log(err);
         return;
     }
     console.log(data);
 }) 

4、fs.rmdir 删除目录

只能删除空目录

 fs.rmdir("./css/base",(err)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log("删除目录成功");
})

5、fs.writeFile 创建写入文件

如果创建时该文件存在,执行替换操作;如果创建时该文件不存在,创建文件并执行写入操作。

fs.writeFile(‘./css/index.css‘,"hello1",(err)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log(‘创建文件成功‘);
})

6、fs.appendFile 文件追加内容

fs.appendFile("./css/index.css","
body{color:red}",(err)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log("appendFile成功");
}) 

7、fs.readFile 读取文件

fs.readdir("./css",(err,data)=>{
     if(err){
         console.log(err);
         return;
     }
     console.log(data);
 }) 
fs.unlink("./css/base/base.css",(err)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log("删除文件成功");
})

9、fs.rename 移动文件or重命名文件

fs.rename("./css/aaa.css","./css/bbb.css",(err)=>{
     if(err){
         console.log(err);
         return;
     }
     console.log("移动文件成功");
 })

10、判断服务器上有没有upload目录,如果没有就创建这个目录,如果有就不做操作。

let path="./base"
fs.stat(path,(err,data)=>{
    //报错即目录不存在,创建目录
    if(err){
        console.log(err);        
        mkdir(path);
        return;
    }
    /*未报错,判断是目录还是文件:
    如果是目录,不做任何操作;  
    如果是文件,删除文件再创建同名目录;*/
    if(data.isFile){
        unlinkfs(path);
        mkdir(path);
    }else{
        console.log("目录已存在");
    }    
})

function mkdir(dir){
    fs.mkdir(dir,(err)=>{
        if(err){
            console.log(err);
            return;
        }
        console.log("创建目录成功");
    }) 
}
function unlinkfs(file){
    fs.unlink(file,(err)=>{
        if(err){
            console.log(err);
            return;
        }
        console.log("删除文件成功");
    })
}

11、检测某个目录下面有哪些子目录及文件,找出该目录下所有的目录,然后放到数组中

const fs = require(‘fs‘);

let path = "./test";
let dirArr = [];
fs.readdir(path,(err,data)=>{
    if(err){
        console.log(err);
        return;
    }
    
    /*for(var i=0;i<data.length;i++){
        // console.log(data[i]); //打印目录
        fs.stat(path+"/"+data[i],(e,d)=>{
            // console.log(data[i]); //打印undefined
            if(d.isDirectory){
                dirArr.push(data[i]);
            }
        })
    }*/
     data.forEach((item)=>{
        console.log(item); //打印目录
        fs.stat(path+"/"+item,(e,d)=>{
            console.log(+d); //打印NAN
            if(d.isDirectory){
                dirArr.push(item);
            }
        })
    })
})
//异步问题

12、fs.createReadStream(path[, options])读取流

const fs = require(‘fs‘);
let readStream = fs.createReadStream("./test.txt");

let cont =0;
let str="";
readStream.on("data",(data)=>{
    str+=data;
    cont++;
})
readStream.on("end",()=>{
    console.log(str);
    console.log(cont);
})
readStream.on("err",(err)=>{
    console.log(err);
})

13、fs.createWriteStream(path[, options])写入流

const fs = require(‘fs‘);
let data=`人之初,性本善。性相近,习相远。
苟不教,性乃迁。教之道,贵以专。
昔孟母,择邻处。子不学,断机杼。
窦燕山,有义方。教五子,名俱扬。
养不教,父之过。教不严,师之惰。
子不学,非所宜。幼不学,老何为。`
let witerStream = fs.createWriteStream("./test.txt");

witerStream.write(data,‘utf-8‘);
witerStream.end();//标记文件末尾
witerStream.on("finish",()=>{
    console.log("写入完成");
})
witerStream.on("error",(err)=>{
    console.log(err);
})
console.log("程序处理完成");

14、pipe管道流

const fs = require(‘fs‘);
let readStream = fs.createReadStream("./fs.js");
let writeStream = fs.createWriteStream("./output.js");
readStream.pipe(writeStream);

15、文件系统标志

flags 参数可以是以下值:
r 以读取模式打开文件。如果文件不存在抛出异常。
r+ 以读写模式打开文件。如果文件不存在抛出异常。
rs 以同步的方式读取文件。
rs+ 以同步的方式读取和写入文件。
w 以写入模式打开文件,如果文件不存在则创建。
wx 类似 ‘w‘,但是如果文件路径存在,则文件写入失败。
w+ 以读写模式打开文件,如果文件不存在则创建。
wx+ 类似 ‘w+‘, 但是如果文件路径存在,则文件读写失败。
a 以追加模式打开文件,如果文件不存在则创建。
ax 类似 ‘a‘, 但是如果文件路径存在,则文件追加失败。
a+ 以读取追加模式打开文件,如果文件不存在则创建。
ax+ 类似 ‘a+‘, 但是如果文件路径存在,则文件读取追加失败。













以上是关于nodejs 判断是文件还是文件夹的主要内容,如果未能解决你的问题,请参考以下文章

nodejs删除安卓手机指定文件

nodejs之fs模块

nodejs获取文件信息,判断是文件或目录

nodejs下载文件先判断内存是不是够用

nodejs——避免判断创建多级目录

nodejs 判断文件属性-目录或者文件