nodejs学习日记fs模块--文件拷贝和目录拷贝

fs模块补充

fs.open()–>异步打开文件

fs.open(path,flags,mode,callback)
path  |  | 
flags  |  参阅支持的文件系统标志。默认值: 'r'。
mode  默认值: 0o666(可读写)。
callback 
   err 
   fd //打开的文件本身

fs.wirteFile()–>异步写入文件

fs.writeFile(fd, data, callback)
file  |  |  |  文件名或文件描述符。
data  |  |  | 
options  | 
encoding  |  默认值: 'utf8'。
mode  默认值: 0o666。
flag  参阅支持的文件系统标志。默认值: 'w'。
callback 
   err 
 
  

文件系统标志

'a' - 打开文件用于追加。如果文件不存在,则创建该文件。
'r' - 打开文件用于读取。如果文件不存在,则出现异常。
'w' - 打开文件用于写入。如果文件不存在则创建文件,如果文件已存在则截断文件。

eg:
//异步读取写入

let fs = require('fs');
fs.open("./../source/c.txt","a",(err,fd)=>{//fd-->打开的文件
    if(!err){
        console.log("打开文件")
        fs.writeFile(fd,"明天过后"+Date.now() + "\n",(err)=>{
            if(!err){
                console.log("写入成功");
            }else{
                throw err;
            }
        });
        //关闭文件
        fs.close(fd,(err)=>{
            if(!err){
                console.log("文件保存并关闭成功");
            }else{
                throw err;
            }
        })
    }
});

fs.readFile()–>读取文件
**

fs.readFile(path[, options], callback)
path  |  |  |  文件名或文件描述符。
options  | 
   encoding  |  默认值: null。
   flag  参阅支持的文件系统标志。默认值: 'r'。
callback 
   err 
   data  | 
 
  

**

fs.copyFile()–>拷贝文件

src  |  |  要拷贝的源文件名。
dest  |  |  拷贝操作的目标文件名。
flags  用于拷贝操作的修饰符。默认值: 0。
callback 
eg:
fs.copyFile('源文件.txt', '目标文件.txt', (err) => {
if (err) throw err;
  console.log('源文件已拷贝到目标文件');
});

拷贝文件:

let fs = require('fs');
fs.readFile("./../source/b.txt",(err,data)=>{
    if(!err){//读取成功
        console.log(data.toString());
        fs.writeFile("./../source/f.txt",data,(err)=>{
            if(!err){
                console.log("拷贝成功");
            }else{
                throw err;
            }
        })
    }
})

拷贝目录:

let fs = require("fs");
let path = require("path");
fs.readdir(__dirname,(err,files)=>{//生成由文件名组成的一个数组
    if(!err){
        if(!fs.existsSync("./../one")){//没有该文件夹
            console.log("没有该文件夹");
            fs.mkdirSync("./../one");//创建one目录
        }else{//拷贝目录
            files.forEach((item,index)=>{//遍历原目录下的文件名
            var item_path = path.join(__dirname,item);//获取原文件路径
            var temp = fs.statSync(item_path);//获取原目录下所有文件的文件信息
        if (temp.isFile()) { // 是文件
            fs.copyFileSync(item_path, path.join("./../one", item));
        } else if (temp.isDirectory()){ // 是目录
            CopyDirectory(item_path, path.join("./../one", item));
        }
        })
        }
    }
})

你可能感兴趣的:(前端,node,前端,js)