zoukankan      html  css  js  c++  java
  • 一头扎进Node(三)

    file.open:异步模式打开文件

    fs.open(path, flags[, mode], callback)

    案例代码如下:

    var fs = require('fs');
    
    /**
     * 参数说明:
     * 	1.path:要打开的文件的文件路径
     *  2.flags:打开文件的方式 读/写
     * 		r:只读方式打开文件,如果文件不存在会抛出异常
     * 		r+:读写模式打开文件,如果文件不存在会抛出异常
     * 		rs:以同步只读的方式打开文件,如果文件不存在会抛出异常
     * 		rs+:以同步读写的方式打开文件,如果文件不存在会抛出异常
     * 		w:以写文件的模式打开文件,如果文件不存在则创建文件,如果存在则清空文件
     * 		wx:以写的模式打开文件,如果文件不存在则创建文件,如果存在抛出异常
     * 		w+:以读写文件的模式打开文件,如果文件不存在则创建文件,如果存在则清空文件
     * 		wx+:以读写的模式打开文件,如果文件不存在则创建文件,如果存在抛出异常
     * 		a:追加模式打开文件,如果不存在则创建文件
     * 		a+:读写和追加模式打开文件,如果不存在则创建文件
     * 		ax:追加模式打开文件,如果存在抛出异常
     * 		ax+:读写和追加模式打开文件,如果存在抛出异常
     * 		
     *  3.mode:设置文件的模式,读写执行(4-2-1)
     *  4.callback:打开文件的回调函数
     *  	function(err,fd){
     *  		//err:文件打开失败的错误信息,如果成功则为null
     *  		//fd:被打开文件的标识
     *  	}
     */
    fs.open('test.txst','wx',function(err,fd){
    	console.info(err);
    	if(err){
    		console.info('文件打开失败...');
    	}else{
    		console.info('文件打开成功...');
    	}
    });
    
    

    fs.openSync:同步模式打开文件

    fs.openSync(path, flags[, mode])

    具体参数用法请参考open方法。

    案例代码如下:

    var fs = require('fs');
    
    var fd =fs.openSync('test.txt', 'r');
    console.info(fd);
    

    fs.read:异步读取一个打开的文件

    fs.read(fd, buffer, offset, length, position, callback)

    具体参数用法请参考open方法。

    案例代码如下:

    var fs = require('fs');
    
    fs.open('test.txt','r',function(err,fd){
    	if(err){
    		console.info('文件打开失败...');
    	}else{
    		/**
    		 * 读取文件
    		 * 
    		 * fs.read(fd, buffer, offset, length, position, callback)
    		 * 		1.fd:通过open方法成功打开的一个文件的返回句柄
    		 * 		2.buffer:用于存放读取内容的buffer对象
    		 * 		3.offset:新的内容添加到buffer中的起始位置
    		 * 		4.length:添加到buffer中的内容长度
    		 * 		5.position:读取的文件中的起始位置
    		 * 		6.callback:读取文件的回调函数
    		 * 			function(err, bytesRead, buffer){
    		 * 				//err:错误信息
    		 * 				//bytesRead:读取的内容在buffer中的长度
    		 * 				//buffer:buffer对象
    		 * 			}
    		 * @type {Buffer}
    		 */
    		var bf = new Buffer(10);
    		fs.read(fd,bf,0,4,null,function(err, bytesRead, buffer){
    			console.info(err); // null or some error
    			console.info(bytesRead); // 4
    			console.info(buffer); //buffer content
    		});
    		
    	}
    });
    

    fs.readSync:同步模式读取打开的文件

    fs.readSync(fd, buffer, offset, length, position)

    该方法以同步模式读取打开的文件,并且返回了从文件中读取的内容的长度。具体参数用法请参考read方法。

    案例代码如下:

    var fs = require('fs');
    
    var bf = new Buffer(10);
    var fd =fs.openSync('test.txt', 'r');
    var len = fs.readSync(fd,bf,0,4,null);
    console.info(len); // 4
    console.info(bf); // buffer content
    

    fs.rename:异步模式对文件或者文件夹重命名

    fs.rename(oldPath, newPath, callback)

    对文件或者文件夹进行重命名操作

    案例代码如下:

    var fs = require('fs');
    
    /**
     * 对文件或者文件夹进行重命名操作
     * 
     * fs.rename(oldPath, newPath, callback)
     *
     * 	1.oldPath:要进行重命名的文件
     * 	2.newPath:要重命名的文件名称
     * 	3.callback:重命名的回调函数
     *  	function(err){
     *  		//err:错误信息
     *  	}
     *  
     */
    fs.rename('./srcFile.txt','./destFile.text',function(err){
    	console.info(err);
    });
    

    注意点

    • 当源文件不存在的时候回报错
    • 当新的文件名称已存在会导致原来的那个文件丢失,不会报错!!!!

    fs.renameSync:同步模式对文件或者文件夹进行重命名

    fs.renameSync(oldPath, newPath)

    该方法以同步模式对文件或者文件夹进行了重命名,返回值为undefined。具体参数用法请参考rename方法。

    案例代码如下:

    var fs = require('fs');
    
    fs.renameSync('./srcFile.txt','./destFile.text');
    

    fs.stat:异步模式获取文件信息

    fs.stat(path, callback)

    该方法主要用来获取文件或者文件夹的信息,包括一些类型、时间相管的信息、文件大小等。

    案例代码如下:

    var fs = require('fs');
    
    
    fs.stat('./src',function(err,stats){
    	/**
    	 *
    	 * stats.mode:
    	 * 		On Win32:
    	 *		 	16895 for a dir and 33206 for a file.
    	 *    	On Linux:
    	 *		   	16877 for a dir, 33188 for a file
    	 *		   	
    	 */
    	console.info("设备名:" + stats.dev);
    	console.info("类型:" + stats.mode); //33188-文件、16877-文件夹
    	console.info("被连接数目:" + stats.nlink);
    	console.info("所有者的用户id:" + stats.uid);
    	console.info("所有者的组id:" + stats.gid);
    	console.info("设备类型:" + stats.rdev);
    	console.info("文件系统 IO 的块大小:" + stats.blksize);
    	console.info("号码:" + stats.ino);
    	console.info("大小:" + stats.size);
    	console.info("所占据块的数目:" + stats.blocks);
    	console.info("上次访问时间:" + stats.atime);
    	console.info("上次修改时间:" + stats.mtime);
    	console.info("上次改变时间:" + stats.ctime);
    	console.info("创建时间:" + stats.birthtime);
    
    });
    

    fs.statSync:同步模式获取文件信息

    fs.statSync(path)

    该方法以同步模式获取文件或者文件夹信息,返回一个stats对象。具体参数用法请参考stat方法。

    案例代码如下:

    var fs = require('fs');
    
    
    var stats = fs.statSync('./src');
    console.info("设备名:" + stats.dev);
    console.info("类型:" + stats.mode); //33188-文件、16877-文件夹
    console.info("被连接数目:" + stats.nlink);
    console.info("所有者的用户id:" + stats.uid);
    console.info("所有者的组id:" + stats.gid);
    console.info("设备类型:" + stats.rdev);
    console.info("文件系统 IO 的块大小:" + stats.blksize);
    console.info("号码:" + stats.ino);
    console.info("大小:" + stats.size);
    console.info("所占据块的数目:" + stats.blocks);
    console.info("上次访问时间:" + stats.atime);
    console.info("上次修改时间:" + stats.mtime);
    console.info("上次改变时间:" + stats.ctime);
    console.info("创建时间:" + stats.birthtime);
    
    
  • 相关阅读:
    Android广播接收器和Activity间传递数据
    Android广播接收器里弹出对话框
    Android本地广播
    setSupportActionBar()方法报错
    exec使用小计
    关于NSA的EternalBlue(永恒之蓝) ms17-010漏洞利用
    20154312 曾林 ExpFinal CTF Writeup
    20154312 曾林 EXP9 Web安全基础
    20154312 曾林 Exp8 web基础
    20154312 曾林 EXP7 网络欺诈防范
  • 原文地址:https://www.cnblogs.com/mangoniki/p/5502962.html
Copyright © 2011-2022 走看看