export default {
	// type: 本地文件系统常量，取值如下
	// 应用私有资源目录，对应常量plus.io.PRIVATE_WWW，仅应用自身可读
	// 应用私有文档目录，对应常量plus.io.PRIVATE_DOC，仅应用自身可读写
	// 应用公共文档目录，对应常量plus.io.PUBLIC_DOCUMENTS，多应用时都可读写，常用于保存应用间共享文件
	// 应用公共下载目录，对应常量plus.io.PUBLIC_DOWNLOADS，多应用时都可读写，常用于保存下载文件
	write(path, data, type=plus.io.PRIVATE_DOC) {
		console.log('[write]', path, data);
		
		return new Promise((resolve, reject) => {
			try {
				plus.io.requestFileSystem(
					type,
					fs => {
						// 创建或打开文件, fs.root是根目录操作对象,直接fs表示当前操作对象
						fs.root.getFile(
							path, {
								create: true // 文件不存在则创建
							},
							fileEntry => {
								// 文件在手机中的路径
								console.log('[write] fileEntry.fullPath', fileEntry.fullPath)
								fileEntry.createWriter(writer => {
									// 向文件中写入数据
									writer.write(data);
									
									// 文件写入成功完成的回调函数
									writer.onwrite = res => {
										console.log('[write] 写入成功', res);
										resolve(res)
									};
									
									// 文件写入操作失败时调用的回调函数
									writer.onerror = err => {
										console.log('[write] 写入失败', err);
										reject(err)
									};
								}, 
								err => {
									console.log('[write] createWriter failed: ' + err);
									reject(err)
								});
							},
							err => {
								console.log('[write] getFile failed: ' + err);
								reject(err)
							}
						);
					},
					err => {
						console.log('[write] requestFileSystem failed: ', err);
						reject(err)
					}
				);
			} catch(err) {
				console.error('[write] catch err', err)
			}
		})
	},
	
	read(path, type=plus.io.PRIVATE_DOC) {
		let that = this;
		return new Promise((resolve, reject) => {
			plus.io.requestFileSystem(
				type,
				fs => {
					fs.root.getFile(
						path, {
							create: false
						},
						fileEntry => {
							fileEntry.file(function(file) {
								console.log('[read] 文件大小:' + file.size + ' 文件名:' + file.name, file);
								//创建读取文件对象
								let fileReader = new plus.io.FileReader();
								//以文本格式读取文件数据内容
								fileReader.readAsText(file, 'utf-8');
								
								//读取文件成功完成的回调函数
								fileReader.onload = function(res) {
									console.log("[read] 文件读取操作完成", res);
									resolve(res.target.result)
								};
								
								//文件读取操作失败时调用的回调函数
								fileReader.onerror = function(err) {
									console.log("[read] 文件读取操作失败", err);
									reject(err)
								};
							});
						},
						err => {
							console.log('[read] getFile failed: ', err)
							reject(err)
						}
					);
				},
				err => {
					console.log('[read] requestFileSystem failed: ', err);
					reject(err);
				}
			);
		})
	}
}