1. 程式人生 > 其它 >plus.io 檔案的儲存路徑

plus.io 檔案的儲存路徑

plus.io 檔案的儲存路徑

前言

最近做用react、h5+技術的APP專案,使用到了plus.io的API去獲取檔案,並修改檔案內容。
現對檔案的儲存路徑做個筆記。

沙盒原則與根目錄模式

1.沙盒原則

符規範 但不好找 檔案儲存在app的資料夾內。應用解除安裝時,檔案也會被刪除。很危險。
檔案的地址: /storage/Android/data/io.dcloud.HBuilder(APP包名)/documents/config.txt

2.根目錄模式

好找 但android11以上可能不支援 檔案直接存放於手機目錄的根目錄下 應用解除安裝後也不會影響檔案
檔案的地址 : /storage/config.txt

舉例

function getData(path) {
	return new Promise(resolve => {//檔案讀寫是一個非同步請求 用promise包起來方便使用時的async+await
		plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, fs => {//請求檔案系統
			fs.root.getFile(path, {//請求地址檔案  '/storage/emulated/0/config.txt'為根目錄  '/config.txt'為/storage/Android/data/io.dcloud.HBuilder(包名)/documents/config.js
				create: true//當檔案不存在時建立
			}, fileEntry => {
				fileEntry.file(function (file) {
					let fileReader = new plus.io.FileReader()//new一個可以用來讀取檔案的物件fileReader
					fileReader.readAsText(file, 'utf-8')//讀檔案的格式
					fileReader.onerror = e => {//讀檔案失敗
						console.log('獲取檔案失敗', fileReader.error)
						plus.nativeUI.toast("獲取檔案失敗,請重啟應用", {
							background: '#ffa38c',
						})
						return
					}
					fileReader.onload = e => {//讀檔案成功
						let txtData = e.target.result
						resolve(txtData)////回撥函式內的值想返回到函式外部  就用promise+resolve來返回出去
					}
				})
			}, error => {
				console.log('2新建獲取檔案失敗', error)
				plus.nativeUI.toast("獲取檔案失敗,請重啟應用", {
					background: '#ffa38c',
				})
				return
			})
		},
			e => {
				console.log('1請求檔案系統失敗', e.message)
				plus.nativeUI.toast("請求系統失敗,請重啟應用", {
					background: '#ffa38c',
				})
				return
			}
		)
	}
	)
}

export default getData