Node.js读取文件内容
原文链接:http://blog.csdn.net/zk437092645/article/details/9231787
Node.js读取文件内容包括同步和异步两种方式。
1、同步读取,调用的是readFileSync
var rf=require("fs");
var data=rf.readFileSync("test","utf-8");
console.log(data);
console.log("READ FILE SYNC END");
输出结果,先内容,后end

2、异步读取,调用readFile
var rf=require("fs");
rf.readFile("test",'utf-8',function(err,data){
    if(err){
        console.log("error");
    }else{
        console.log(data);
    }
});
console.log("READ FILE ASYNC END");
输入结果先end,后内容

同步式读取文件的方式比较容易理解,将文件名作为参数传入 fs.readFileSync 函数,阻塞等待读取完成后,将文件的内容作为函数的返回值赋给 data 变量,接下来控制台输出 data 的值,最后输出 end。
异步式读取文件就稍微有些违反直觉了,end先被输出。要想理解结果,我们必须先知道在 Node.js 中,异步式 I/O 是通过回调函数来实现的。fs.readFile 接收了三个参数,第一个是文件名,第二个是编码方式,第三个是一个函数,我们称这个函数为回调函数。
JavaScript 支持匿名的函数定义方式, 譬如例子中回调函数的定义就是嵌套在fs.readFile 的参数表中的。
上面异步读取readFile中的参数回调函数可以拿出来。
var rf=require("fs");
function callBack(err,data){
    if(err){
        console.log("error");
    }else{
        console.log(data);
    }
}
rf.readFile("test","utf-8",callBack);
console.log("READ FILE ASYNC END");
fs.readFile 调用时所做的工作只是将异步式 I/O 请求发送给了操作系统,然后立即返回并执行后面的语句,执行完以后进入事件循环监听事件。当 fs 接收到 I/O 请求完成的事件时,事件循环会主动调用回调函数以完成后续工作。
整个项目文件路径如图所示。tes为要读取的文件。

Node.js读取文件内容的更多相关文章
- Node.js读取文件内容并返回值(非异步)
		主要解决的问题的,以最近VsCode插件开发为例,每次请求都需要token,而vscode并不支持cookie这样的存储,所以就采用粗暴点办法,存到某个用户目录下并读取. 源码如下: var fs=r ... 
- node.js 读取文件
		一般用法 var path = require("path"); var fs = require("fs"); //let filePath = path.j ... 
- node.js 读取文件--createReadStream
		createReadStream 是fs模块里面读流的一个方法 这个方法基于fs模块的,所以我们先要引进fs模块 let fs=require("fs"); createReadS ... 
- Node.js读取文件相对路径写法注意
		首先看一下文件的存放结构: 我们现在希望在上面标记的JS文件里面读取html里面的内容,我们的代码如下: var fs=require("fs"); fs.readFile('te ... 
- node 读取文件内容并响应
		node 读取文件内容并响应 const http = require('http'); const fs = require('fs') //创建 Server const server = htt ... 
- node遍历文件夹并读取文件内容
		var fs = require('fs'); var path = require('path');//解析需要遍历的文件夹 var filePath = path.resolve('./dist' ... 
- js前端读取文件内容
		方法1:原生 <input type="file" name="file" id="file" onchange="jsRe ... 
- Node.js写文件的三种方法
		Node.js写文件的三种方式: 1.通过管道流写文件 采用管道传输二进制流,可以实现自动管理流,可写流不必当心可读流流的过快而崩溃,适合大小文件传输(推荐) var readStream = fs. ... 
- 用node.js读写文件
		node.js没有二进制数据类型,却提供了类似字节数组的“流“数据类型,着一种数据类型在文件系统模块中频频出现 node.js打开文件 fs = require('fs'); console.log( ... 
随机推荐
- hadoop命令运行,去除:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform 警告
			参照:Hadoop之—— WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... 修 ... 
- POJ 2342 - Anniversary party - [树形DP]
			题目链接:http://poj.org/problem?id=2342 Description There is going to be a party to celebrate the 80-th ... 
- ubuntu x64 debootstrap
			sudo debootstrap jessie /mnt/jessie http://mirrors.163.com/debian 
- 币安Binance API
			本文介绍币安Binance API General API Information The base endpoint is: https://api.binance.com All endpoint ... 
- 蔡勒(Zeller)公式--黑色星期五
			求某年某月某日是周几; 蔡勒(Zeller)公式: w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 ;y是年的后两位:c是世纪数-1(年的前两位):m是月份,大于等于3,小于等 ... 
- 2015 湘潭大学程序设计比赛(Internet)--E题--烦人的异或
			烦人的异或 Accepted : 27 Submit : 102 Time Limit : 5000 MS Memory Limit : 65536 KB 题目描述 如下图,有一N*M的表格, ... 
- Python开发【笔记】:pymsyql 插入一条数据同时获取新插数据的自增id的两种方式
			一.通过cursor.lastrowid import pymysql.cursors # Connect to the database connection = pymysql.connect(h ... 
- python中实现mysql连接池
			python中实现mysql连接池 import pymysql from DBUtils.PooledDB import PooledDB MYSQL_HOST = 'localhost' USER ... 
- Failed to load project at 'xxx.xcodeproj', incompatible project version。
			Failed to load project at 'xxx.xcodeproj', incompatible project version. 更新最新的xcode,xcode高版本可以打开低版本的 ... 
- cube-ui的用法
			.安装:npm install cube-ui -S .修改 .babelrc:(添加到plugins中去) { "plugins": [ ["transform-mod ... 
