reader.md

由 louistru 创建, 最后一次修改 2017-11-22

ngui/reader

这里提供的方法可以针对不协议的uri路径进行基本的读取操作

现在支持的路径类型:

  • http:// or https:// - 可使用同步或异步方式进行读取,但不能读取目录或测试存在, readdirSync()返回空数组而isFileSync()永远返回false

  • file:// 本地文件路径。/var/data or var/data 都可做为本地路径,并不会出错。

  • zip:// 这是zip包内路径的一种表示方法,zip:///var/data/test.zip@a.txt 这个路径表示zip:///var/data/test.zip中的a.txt文件。注意这个路径一定要存在于本地文件系统中

Object: StreamData

读取文件流时返回的结构类型, 这是个Object类型描述并没有实际存在的构造函数

StreamData.data

  • {Buffer} 当前读取到的Buffer数据

StreamData.complete

  • {bool} 读取是否完成

StreamData.size

  • {uint} 已经读取到的数据总量

StreamData.total

  • {uint} 全部数据源的总大小,有可能是0,为0表示数据大小未知,可能为无限大比如为视频直播数据流

readStream(path[,cb])

异步读取文件流,并返回中止id

通过中止id可强制取消当前的读取任务

成功后通过回调返回StreamData类型数据

Callback: cb(data) (data:StreamData)

  • @arg path {String} 要读取的文件路径
  • @arg [cb] {Function}
  • @ret {uint} return abort id

read(path[,cb])

异步读取文件,并返回中止id,通过中止id可强制取消当前的读取任务

成功后通过回调返回Buffer数据

Callback: cb(data) (data:Buffer)

Example:

// async read file stream 
reader.readStream('http://www.baidu.com', function(d){ }));
reader.readStream('file:///var/data/test.txt', function(d){ }));
reader.readStream('zip:///var/data/test.zip@aa.txt', function(d){ 
    /*Success*/ 
    console.log(d.data.length, d.complete);
}));

// async read file
reader.read('http://www.baidu.com', function(d){ }));
reader.read('file:///var/data/test.txt', function(d){ }));
reader.read('zip:///var/data/test.zip@aa.txt', function(d){ 
    /*Success*/ 
    console.log(d.length);
}.catch(e=>{ /*Fail*/ }));

readSync(path)

同步读取文件,成功返回文件Buffer失败会抛出异常

readdirSync(path)

读取目录列表信息,返回DirentArray

这个方法不能处理http://https://类型的路径,如果传入这种路径立即返回一个空数组Array

这个方法也不会抛出异常,如果不能读取路径,只会返回空数组Array

existsSync(path)

测试文件或目录是否存在,如果文件存在会返回false

这个方法不能处理http://https://类型的路径,如果传入这种路径立即返回false

isFileSync(path)

测试文件是否存在

isDirectorySync(path)

测试目录是否存在

abort(id)

通过id中止异步任务,与fs.abort功能相同

  • @arg id {uint} 传入的中止id
以上内容是否对您有帮助:
二维码
建议反馈
二维码