uniapp写入字节流文件bytes

1.

//文件的写入操作传入要写入文件名,base64
function lzFileWriter(base64,fileName) {
	return new Promise((result,reject)=>{
		// PRIVATE_WWW:本地文件系统常量,Number类型,固定值1。应用运行资源目录,仅本应用可访问。 为了确保应用资源的安全性,此目录只可读。
		// PRIVATE_DOC 本地文件系统常量,Number类型,固定值2。应用私有文档目录,仅本应用可读写。
		plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
			/*
			fs.root是根目录操作对象DirectoryEntry
			getFile(path,flag,succesCB,errorCB)创建或打开文件
				path: ( DOMString ) 必选 要操作文件相对于当前目录的地址
				flag: ( Flags ) 可选 要操作文件或目录的参数 create: (Boolean 类型 )是否创建对象标记 指示如果文件或目录不存在时是否进行创建,默认值为false
				succesCB: ( EntrySuccessCallback ) 可选 创建或打开文件成功的回调函数
				errorCB: ( FileErrorCallback ) 可选 创建或打开文件失败的回调函数
			*/ 
		   // 创建或打开文件
			fs.root.getFile(fileName,{create:true},function(fileEntry) {
				// 获得平台绝对路径    
				var fullPath = fileEntry.fullPath;  
				console.log(‘平台绝对路径‘,fullPath);
				// 引入安卓原生类
				var Base64 = plus.android.importClass("android.util.Base64");
				var FileOutputStream = plus.android.importClass("java.io.FileOutputStream");
				//如果文件不存在则创建文件,如果文件存在则删除文件后重新创建文件
				var out = new FileOutputStream(fullPath); 
				/**
				 * 此处需要把base64前缀去除,在写入字节流数组
				 * 去除头部data:image/jpg;base64,留下base64编码后的字符串
				**/
				let index=base64.indexOf(‘,‘)
				let base64Str=base64.slice(index+1,base64.length)
				console.log(base64Str.slice(0,55));
				//base64解密得到字节流bytes;	
				var bytes = Base64.decode(base64Str,0);
				try{  
					console.log(bytes);
					out.write(bytes); // byte 数组写入此文件输出流中。
					out.flush(); //刷新写入文件中去。
					out.close(); //关闭此文件输出流并释放与此流有关的所有系统资源。
					result(fullPath)
				}catch(e){  
					console.log(e.message);  
					reject(e.message)
				}
				// 下面的方法只能写入字符串,无法写入字节流bytes
				// fileEntry文件系统中的文件对象,用于管理特定的本地文件
				// fileEntry.file(function(file) {
				// 	/*createWriter获取文件关联的写文件操作对象FileWriter
				// 		abort: 终止文件写入操作
				// 		seek: 定位文件操作位置
				// 		truncate: 按照指定长度截断文件
				// 		write: 向文件中写入数据
				// 	*/
				// 	fileEntry.createWriter(function(FileWriter) {
				// 		FileWriter.write(base64);
				// 		FileWriter.onwriteend=function(res){
				// 			console.log(res.target.fileName);
				// 			result(res.target.fileName)
				// 		}
				// 		FileWriter.onerror=function(error){
				// 			console.log(error);
				// 			reject(error)
				// 		}
				// 	}, function(e) {
				// 		console.log(e);
				// 	});
				// });
			});
		});
	})
}

  

uniapp写入字节流文件bytes

上一篇:01_appium的安装


下一篇:解决数据库事务日志文件过大的问题]