Node.js 文件系统

前端之家收集整理的这篇文章主要介绍了Node.js 文件系统前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。

Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。

异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。

建议大家使用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞。

 

创建 test.txt 文件

这是在test.txt中的内容

创建 main.js 文件

var fs=require("fs");

//异步
fs.readFile("test.txt",function(err,data){
    if(err){
        return console.error(err);
    }
    console.log("异步:"+data.toString());
})

同步
var data=fs.readFileSync("test.txt");
console.log("同步:"+data.toString());

 

 

 

异步模式下打开文件

fs.open(path,flags[,mode],callback)
  • path - 文件的路径。

  • flags - 文件打开的行为。具体值详见下文。

  • mode - 设置文件模式(权限),文件创建默认权限为 0666(可读,可写)。

  • callback - 回调函数,带有两个参数如:callback(err,fd)。

 

 

 

异步
fs.open("test.txt","r+",1)"> console.error(err);
    }
    console.log("文件打开成功");
})

 

 

 

异步模式获取文件信息的语法格式:

fs.stat(path,callback)
  • path - 文件路径。

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

异步
fs.stat("test.txt",stats){
     console.error(err);
    }
    console.log(stats.isFile());判断是否是文件
})

 

 

 

 

 

 

判断是否是文件
    console.log(stats.isDirectory());判断是否是目录
})

 

 

 

 console.error(err);
    }
    console.log(stats);
    console.log(stats.isFile());判断是否是目录
})

 

 

 

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

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

writeFile 直接打开文件默认是 w 模式,所以如果文件存在,该方法写入的内容会覆盖旧的文件内容

  • file - 文件名或文件描述符。

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

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

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

异步
fs.writeFile("test.txt","这是新写入的哈",1)">(err){
     console.error(err);
    }
    console.log("数据写入成功");

    fs.readFile("test.txt",data){
        (err){
             console.error(err);
        }
        console.log(data.toString());
        console.log("数据读取成功");
    })
})

 

 

 

异步模式下读取文件的语法格式:

fs.read(fd,buffer,offset,length,position,callback)
  • fd - 通过 fs.open() 方法返回的文件描述符。

  • buffer - 数据写入的缓冲区。

  • offset - 缓冲区写入的写入偏移量。

  • length - 要从文件中读取的字节数。

  • position - 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取。

  • callback - 回调函数,有三个参数err,bytesRead,buffer,err 为错误信息, bytesRead 表示读取的字节数,buffer 为缓冲区对象。

);
var buf=new Buffer.alloc(1024);分配buffer

);

    fs.read(fd,buf,0,buf.length,bytes){
         console.error(err);
        }
        console.log(bytes+" 字节被读取");

        输出读取的字节
        if(bytes>0){
            console.log(buf.slice(0,bytes).toString());
            console.log("数据读取成功");
        }
        
    })
})

 

 

 

异步模式下关闭文件的语法格式:

fs.close(fd,callback)
  • fd - 通过 fs.open() 方法返回的文件描述符。

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

);
        }

        关闭文件
        fs.close(fd,1)">(err){
                console.error(err);
            }
            console.log("文件关闭成功");
        })
        
    })
})

 

 

 

异步模式下截取文件的语法格式:

fs.ftruncate(fd,len,callback)
);

    截取文件
    fs.ftruncate(fd,9,1)"> console.error(err);
        }
        console.log("文件截取成功");

        fs.read(fd,bytes){
            (err){
                 console.error(err);
            }
            console.log(bytes+" 字节被读取");

            输出读取的字节
            ){
                console.log(buf.slice(0);
            }

            关闭文件
            fs.close(fd,1)">(err){
                    console.error(err);
                }
                console.log("文件关闭成功");
            })
            
        })
    })
})

 

 

 

删除文件的语法格式:

fs.unlink(path,callback)
  • path - 文件路径。

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

删除文件
fs.unlink("test.txt",1)">(err){
        console.error(err);
    }
    console.log("文件删除成功");
})

 

 

 

 

 

 

创建目录的语法格式:

fs.mkdir(path[,callback)
  • path - 文件路径。

  • options 参数可以是:

    • recursive - 是否以递归的方式创建目录,默认为 false。
    • mode - 设置目录权限,默认为 0777。
  • callback - 回调函数,没有参数。

创建目录
fs.mkdir("temp/test/",1)">(err){
        console.error(err);
    }
    console.log("目录创建成功");
})

 

 

 

 这个案例中必须保证temp目录是存在的

 

可以添加 recursive: true 参数,不管temp是否存在:

true},(err)=>{
    throw err;
    }
    console.log("目录创建成功");
})

 

 

 

 

读取目录的语法格式:

fs.readdir(path,callback)
读取目录
fs.readdir("temp/test/",files){
     err;
    }
    
    files.forEach((file){
        console.log(file);
    })
    
})

 

 

删除目录的语法格式:

fs.rmdir(path,1)">删除目录
fs.rmdir("temp/test/",1)"> err;
    }
    
    console.log("删除目录成功");
})

 

 

这里报错了,因为我要删除的目录不是空目录,得先保证目录里没有文件才能删除目录

 

以下再补充一些常用的操作方法,要看完整的请上官方文档

fs.rename(oldPath,newPath,callback)
异步 rename().回调函数没有参数,但可能抛出异常。

fs.chmod(path,callback)
异步 chmod().回调函数没有参数,但可能抛出异常。

fs.appendFile(filename,callback)
异步追加文件内容

fs.watchFile(filename[,listener)
查看文件修改

fs.unwatchFile(filename[,listener])
停止查看 filename 的修改

fs.exists(path,callback)
检测给定的路径是否存在。

fs.access(path[,callback)
测试指定路径用户权限。

fs.createReadStream(path[,options])
返回ReadStream 对象。

 

猜你在找的JavaScript相关文章