lNode.js学习笔记7

文件系统fs

fs模块是文件操作的封装,它提供了文件的读取、写入、更名、删除、遍历目录、链接等POSIX(注:可移植操作系统接口:Portable Operating System Interface ,缩写为 POSIX )文件系统操作。

fs模块中所有的操作都提供了异步(Asyn)和同步(Syn)的两个版本,例如读取文件内容的有异步的fs.readFile()和同步的fs.readFileSync()。

1. fs.readFile(filename , [encoding], [callback(err,data)])是最简单的读取文件的函数。

filename : 要读取的文件名。

encoding:文件的字符编码。

callback : 回调函数,用于接收文件的内容。接收两个参数err, 和data ,err表示有没有错误发生,data是文件内容。如果指定了encoding,data是一个解析后的字符串,

否则data将会是以Buffer形式表示的二进制数据。

如果能够正常读取file,则err是null

提示: Node.js的异步编程接口习惯是以函数的最后一个参数作为回调函数,通常一个函数只有一个回调函数。回调函数是实际参数中的第一个err,其余的参数是其他返回的内容,

如果没有发生错误,err值会是null或是undefined。如果有发生错误,err通常是Error对象的实例。

提示: 与同步I/O函数不同,Node.js中异步函数大多没有返回值。

2.fs.open(path , flags, [mode], [callback(err,fd)])是POSIX中open函数的封装。

path: 文件的路径(建议是相对路径,便于移植)

flags:

r : 以只读方式打开文件。

r+ : 以读写方式打开文件。

w: 以写入模式打开文件,如果文件不存在则创建。

w+ : 以读写模式打开文件,如果文件不存在就创建。

a: 以追加模式打开文件,如果不存在则创建。

a+ : 以读取追加模式打开文件,如果文件不存在则创建。

mode :用于创建文件时指定权限,默认是0666。回调函数将会传递一个文件描述符fd。

注:

(1)指定权限0666: 文件权限指的是POSIX操作系统中对文件读取和访问权限的规范,通常用一个八进制来表示。

例如0754 表示的是: 文件所有者的权限是7( 读、写、执行:0111),同组的用户的权限是5(读、执行0101),其他用户的权限是4(读 0100)。

则: 0666 :文件所有者,同组用户和其他用户的权限都是6( 读、写0110).

(2)文件描述符是一个非负整数,表示操作系统内核为当前进程所维护的打开文件的记录表的索引。

3.fs.read(fd,buffer,offset,length, position,[callback(err,bytesRead,buffer)])是POSIXread函数的封装,相比fs.readFile提供了更底层的接口、

fs.read的功能是从指定的文件描述符fd中读取数据并写入buffer指向的缓冲区对象。

offset是buffer的写入偏移量。

length : 是要从文件中读取的字节数。

position: 文件读取的起始位置,如果position的值是null,则会从文件指针的位置读取。

bytesRead表示读取的字节数。

buffer :表示缓冲区对象。

一般来说,除非必要,一般都不要使用fs.read方式读取文件,因为他会要求你手动管理缓冲区和文件指针,尤其是在你不知道文件大小的时候,这将会一件很麻烦的事情。

4.fs.writeFile(filename,data,[encoding],[callback(err)])

如果filename文件不存在,则会创建该文件并写入内容data。如果filename文件已经存在,则data会覆盖原先的内容,相当于重写!

时间: 2024-12-28 16:08:24

lNode.js学习笔记7的相关文章

Vue.js学习笔记:在元素 和 template 中使用 v-if 指令

f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <script src="https://cdn.bootcss.com/vue/2.2.

[Pro Angular.JS]学习笔记1.1:设置开发环境

可以使用yeoman.io,很方便.我已经写了一篇随笔,介绍如何使用.这里也有一篇介绍的文章:http://www.cnblogs.com/JoannaQ/p/3756281.html 代码编辑器,在Mac下用了一下WebStorm,太恶心了.另外发现书的作者使用的开发环境是Windows + VS Express 2013,为了方便学习,我也使用VS Express 2013 Update2.VS2013用起来蛮舒服的,把WebStorm比得跟驼屎一样.也许是因为我没用习惯吧. 1.安装Nod

【转】Backbone.js学习笔记(二)细说MVC

文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Backbone源码结构 1: (function() { 2: Backbone.Events // 自定义事件 3: Backbone.Model // 模型构造函数和原型扩展 4: Backbone.Collection // 集合构造函数和原型扩展 5: Backbone.Router // 路由

Angular JS 学习笔记

特定领域语言 编译器:遍历DOM来查找和它相关的属性, 分为编译和链接两个阶段, 指令:当关联的HTML结构进入编译阶段时应该执行的操作,可以写在名称里,属性里,css类名里:本质上是函数 稳定的DOM:绑定了数据模型的DOM元素的实例不会在绑定的生命周期发生改变 作用域:用来检测模型的改变和为表达式提供执行上下文的 AngularJS 和其它模板系统不同,它使用的是DOM而不是字符串 指令: 由某个属性.元素名称.css类名出现而导致的行为,或者说是DOM的变化 Filter过滤器:扮演着数据

Node.js学习笔记(3) - 简单的curd

这个算是不算完结的完结吧,前段时间也是看了好久的Node相关的东西,总想着去整理一下,可是当时也没有时间: 现在看来在整理的话,就有些混乱,自己也懒了,就没在整理,只是简单的记录一下 一.demo的简单介绍 这次demo,只涉及到简单的curd操作,用到的数据库是mongo,所以要安装mongo数据库,数据库连接驱动是mongoose: 当然关于mongo的驱动有很多,比如mongous mongoskin等:(详见http://cnodejs.org/topic/4f4ca8e0940ce2e

JS学习笔记-OO疑问之封装

封装是面向对象的基础,今天所要学习的匿名函数与闭包就是为了实现JS的面向对象封装.封装实现.封装变量,提高数据.系统安全性,封装正是面向对象的基础. 匿名函数 即没有名字的函数,其创建方式为 function(){...} 单独存在的匿名函数,无法运行,可通过赋值给变量调用或通过表达式自我执行来实现运行. 1.赋值给变量为一般的函数使用方式 var run = function(){ return '方法运行中'; }; alert(run()); 2.通过表达式自我执行 (function(a

每日js学习笔记2014.5.4

<script language="javascript">var mystring = "这是第一个正则表达式的例子";var myregex = new RegExp("这是"); //创建正则表达式if (myregex.test(mystring)) //test的功能是查找字符串中是否有匹配项,有则返回true,没有则返回false{ document.write ("找到了指定的模式");}else{

每日js学习笔记2014.5.5

<script language="javascript"><!-- var textstr = prompt("请输入一个字符串:",""); //prompt的用法,包含两个参数 var regex = /[A-Z][a-z]tion/; //[A-Z]有无匹配项 var result = regex.test(textstr); //test的用法 document.write ("<font size='

JS学习笔记-OO疑问之对象创建

问一.引入工厂,解决重复代码 前面已经提到,JS中创建对象的方法,不难发现,基本的创建方法中,创建一个对象还算简单,如果创建多个类似的对象的话就会产生大量重复的代码. 解决:工厂模式方法(添加一个专门创建对象的方法,传入参数避免重复) function createObject(name,age){ var obj =new Object(); //创建对象 obj.name = name; obj.age = age; obj.run = function(){ return this.nam