使用應(yīng)開啟以下權(quán)限(讀取和寫入)
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
原理:利用H5plus
的native
,引入java
類來進(jìn)行處理。文章來源:http://www.zghlxwxcb.cn/news/detail-672816.html
File.js
/*
使用該類應(yīng)開啟以下權(quán)限(讀取和寫入)
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
*/
/*
文件編碼
ansi(ascii):英文標(biāo)準(zhǔn)碼0-127,包括控制符和其他英文字符編碼,這在后來一直統(tǒng)一沒再變過,當(dāng)然它只需要一個(gè)字節(jié)保存
gb2312和gbk:這兩個(gè)是ancii碼加上漢字的擴(kuò)展,漢字多達(dá)10萬,在ancii編碼基礎(chǔ)上再加一個(gè)字節(jié)表示漢字,共可表示字符65535個(gè),包括了繁體字。因此一個(gè)中文字符包含兩個(gè)字節(jié)。eclipse中默認(rèn)編碼方式為gbk。在Windows中文系統(tǒng)中ANSI是默認(rèn)的編碼方式。對(duì)于英文文件是ASCII編碼,對(duì)于簡體中文文件是GB2312編碼。
Unicode編碼:顧名思義,這是國際統(tǒng)一標(biāo)準(zhǔn)編碼,在這之前各國標(biāo)準(zhǔn)編碼不統(tǒng)一,微軟等公司需要為各國的計(jì)算機(jī)系統(tǒng)定制符合不同編碼標(biāo)準(zhǔn)的系統(tǒng),顯然,成本太高,并且互聯(lián)網(wǎng)的出現(xiàn)讓不同編碼標(biāo)準(zhǔn)的計(jì)算機(jī)交互變得困難,如:兩國的郵件系統(tǒng),會(huì)因?yàn)槭褂貌煌木幋a標(biāo)準(zhǔn)而導(dǎo)致接受方收到的郵件是亂碼。
utf-8和utf-16編碼:UTF的意思是(UCS Transfer Format),顯然是隨著互聯(lián)網(wǎng)的出現(xiàn),需要解決Unicode在網(wǎng)絡(luò)上的傳輸問題。顧名思義,UTF8就是每次8個(gè)位傳輸數(shù)據(jù),而UTF16就是每次16個(gè)位,只不過為了傳輸時(shí)的可靠性,從UNICODE到UTF時(shí)并不是直接的對(duì)應(yīng),而是要過一些算法和規(guī)則來轉(zhuǎn)換。UTF-8就是在互聯(lián)網(wǎng)上使用最廣的一種unicode的實(shí)現(xiàn)方式。
*/
/**
* 獲取手機(jī)內(nèi)置存儲(chǔ)的根路徑
* @return {String}
*/
const root = function() {
const environment = plus.android.importClass("android.os.Environment");
return environment.getExternalStorageDirectory();
}
/**
* 獲取指定文件夾下的所有文件和文件夾列表
* @param {String} path 文件夾路徑
* @return {Array<String>} 文件和文件夾列表
*/
const filelist = function(dir = '') {
const File = plus.android.importClass("java.io.File");
let list = [];
let file = new File(dir);
let tempList = file.listFiles();
for (let i = 0; i < tempList.length; i++) {
let fileName = tempList[i].getName();
list.push(fileName);
}
return list;
}
/**
* 創(chuàng)建文件
* @return {boolean} flase=失?。ㄒ汛嬖?、操作失敗),true=成功
*/
const createNewFile = function(path = '') {
const File = plus.android.importClass('java.io.File');
let file = new File(path);
if (!file.exists()) {
return file.createNewFile();
}
return false;
}
/**
* 創(chuàng)建文件夾
* @return {boolean} flase=失?。ㄒ汛嬖凇⒉僮魇。瑃rue=成功
*/
const mkdirs = function(path = ''){
const File = plus.android.importClass('java.io.File');
let file = new File(path);
if (!file.exists()) {
return file.mkdirs();
}
return false;
}
/**
* 讀取文件
* @param {String} path 文件路徑
* @param {String} charset 編碼
* @return {Array<String>} 內(nèi)容列表(按行讀?。?文件不存在或異常則返回false
*/
const readTxt = function(path = '', charset = 'utf-8') {
const File = plus.android.importClass('java.io.File');
const InputStreamReader = plus.android.importClass('java.io.InputStreamReader');
const BufferedReader = plus.android.importClass('java.io.BufferedReader');
const FileInputStream = plus.android.importClass('java.io.FileInputStream');
let file = new File(path);
let inputStreamReader = null;
let bufferedReader = null;
let list = [];
try {
if (!file.exists()) {
return false;
}
inputStreamReader = new InputStreamReader(new FileInputStream(file), charset);
bufferedReader = new BufferedReader(inputStreamReader);
let line = '';
while (null != (line = bufferedReader.readLine())) {
list.push(line);
}
bufferedReader.close();
inputStreamReader.close();
} catch (e) {
if (null != bufferedReader) {
bufferedReader.close();
}
if (null != inputStreamReader) {
inputStreamReader.close();
}
return false;
}
return list;
}
/**
* 寫入文件內(nèi)容
* @param {String} path 文件路徑
* @param {String} content 內(nèi)容
* @param {boolean} append 內(nèi)容寫入類型,false=不追加(覆蓋原有內(nèi)容),true=追加(從內(nèi)容尾部寫入)
* @param {String} charset 編碼
* @return {boolean} true=成功,false=失敗
*/
const writeTxt = function(path = '', content = '', append = false, charset = 'utf-8') {
const File = plus.android.importClass('java.io.File');
const FileOutputStream = plus.android.importClass('java.io.FileOutputStream');
const OutputStreamWriter = plus.android.importClass('java.io.OutputStreamWriter');
let outputStreamWriter;
let file = new File(path);
try {
//不存在則創(chuàng)建新的文件
if (!file.exists()) {
file.createNewFile();
}
outputStreamWriter = new OutputStreamWriter(new FileOutputStream(path, append), charset);
outputStreamWriter.write(content);
outputStreamWriter.close();
} catch (e) {
if (null != outputStreamWriter) {
outputStreamWriter.close();
}
return false;
}
return true;
}
/**
* 判斷文件是否存在
* @param path 文件路徑
* @return true=存在 false=不存在
*/
const isFileExist = function(path = ''){
const File = plus.android.importClass('java.io.File');
return new File(path).exists()
}
/**
* 刪除文件
* @param {String} path
*/
const deleteFile = function(path = ''){
const File = plus.android.importClass('java.io.File');
let file = new File(path);
if (file.exists()) {
return file.delete();
}
return false
}
export default {
root,
filelist,
createNewFile,
mkdirs,
readTxt,
writeTxt,
isFileExist,
deleteFile
}
uniapp開發(fā)記錄文章來源地址http://www.zghlxwxcb.cn/news/detail-672816.html
到了這里,關(guān)于uniapp安卓讀取或?qū)懭雝xt文件,創(chuàng)建文件或文件夾,獲取手機(jī)內(nèi)置存儲(chǔ)根路徑的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!