uni-app设备本地文件读写——2022.11.18

封装manageFile.js

//创建注册码+设备编号文件及删除文件
const dir = '/.keyData'; //文件夹前+.是隐藏文件 避免用户误删
const pathUrl = '/.keyData/keyData.txt';
const environment = plus.android.importClass("android.os.Environment");
const BufferedReader = plus.android.importClass("java.io.BufferedReader");
const FileReader = plus.android.importClass("java.io.FileReader");
const FileWriter = plus.android.importClass("java.io.FileWriter");
const File = plus.android.importClass("java.io.File");
//文件夹根目录
const sdRoot = environment.getExternalStorageDirectory();
//写
export function writeFile(res){
	return new Promise((resolve, reject) => {
		// 方便间隔(保留源文件)
		res = JSON.stringify(res);
		try {
		    let directory = new File(sdRoot + dir);
		    if(!directory.exists()) {
				 //创建目录
		        directory.mkdirs();
		    }
		    let file = new File(sdRoot + pathUrl);
			//创建文件
		    if(!file.exists()) {
		        file.createNewFile();
		    }
			// todo 是否保留源文件内容,true保留 ,false不保留
		    let fos = new FileWriter(sdRoot + pathUrl, true);
		    fos.write(res);
		    fos.close();
		    resolve(true);
		} catch(e) {
		   reject(false);
		}
		reject(false);
	})
}
//删
export function deleteFile(){
	return new Promise((resolve, reject) => {
		let file = new File(sdRoot + pathUrl);
		if(file.exists() && file.isFile()) {
		    resolve(file.delete());
		} else {
		  reject(false);
		}
	})
}
//读
export function readFile(){
    return new Promise((resolve, reject) => {
		let readFr = new File(sdRoot + pathUrl);
		let txt = '';
		try{
			var reader = new BufferedReader(new FileReader(readFr));
			let txt = reader.readLine();
			resolve(txt);
		} catch(e){
			reject("no have the file");
		}
	})
}

函数试用

1、读文件

readFile().then(res => {
	console.log(res);	
});

2、写文件

writeFile(checkKey).then(res => {});

注意事项

代码完成后还需要管理APP权限才可在设备上读写文件
在manifest.json–app-plus–distribute中配置以下内容(可根据实际情况自定义是否在APP启动时弹出权限询问)

/* 应用发布信息 */
        "distribute" : {
            /* android打包配置 */
            "android" : {
                "permissions" : [
                    "<uses-feature android:name=\"android.hardware.camera\"/>",
                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
                    "<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>",
                    "<uses-permission android:name=\"android.permission.INTERNET\"/>",
                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
                    "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
                    "<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\"/>",
                    "<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>",
                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
                    "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
                    "<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />"
                ],
                "abiFilters" : [ "armeabi-v7a" ],
                "autoSdkPermissions" : true,
                "permissionExternalStorage" : {
                    "request" : "once",
                    "prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
                }
            },
            /* ios打包配置 */
            "ios" : {
                "idfa" : false,
                "privacyDescription" : {
                    "NSCameraUsageDescription" : "获取相机权限拍照并上传,用于提交数据检测信息",
                    "NSLocationWhenInUseUsageDescription" : "获取您的地理位置,用于查看拍照实时地点",
                    "NSLocationAlwaysUsageDescription" : "获取您的地理位置,用于查看拍照实时地点",
                    "NSLocationAlwaysAndWhenInUseUsageDescription" : "获取您的地理位置,用于查看拍照实时地点",
                    "NSPhotoLibraryUsageDescription" : "获取相册选择图片并上传,用于提交数据检测信息",
                    "NSPhotoLibraryAddUsageDescription" : "获取相册选择图片并上传,用于提交数据检测信息"
                },
                "dSYMs" : false
            },
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值