|
原文连接 https://blog.csdn.net/qq_38322527/article/details/80902566
- <!doctype html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
- <link href="../css/mui.min.css" rel="stylesheet" />
- <header class="mui-bar mui-bar-nav">
- <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
- <h1 class="mui-title">文件查找</h1>
- </header>
- </head>
- <body>
- <div class="mui-content">
- <ul id="list" class="mui-table-view mui-table-view-chevron"></ul>
- </div>
- <script src="../js/mui.min.js"></script>
- <script src="../js/njs-io.js" type="text/javascript" charset="utf-8"></script>
- <script type="text/javascript">
- var nowFileType;
- var subRoot = null;
- var lockOadWebview = null;
- mui.init({
- /*preloadPages: [{
- id: 'lock-oadUpdate.html',
- url: 'lock-oadUpdate.html'
- }]*/
- });
- mui.plusReady(function() {
- var self = plus.webview.currentWebview();
- nowFileType = self.fileType;
- console.log("filepath:" + self.filepath);
- init(self.filepath);
- var sdRoot = getSDRoot();
- /*var location = "Download";
- init(sdRoot + "/" + location);*/
- //点击事件
- mui('.mui-table-view').on('tap', 'li', function() {
- var name = this.getAttribute('name');
- var fileType = this.getAttribute('data-type');
- var filepath = subRoot + '/' + name;
- console.log("文件路径-->" + filepath);
- console.log("文件名称-->" + name);
- if(fileType === 'Folder') {
- mui.openWindow({
- url: 'file-query.html',
- id: 'file-query.html',
- createNew: true,
- extras: {
- filepath: filepath,
- fileType:nowFileType
- }
- })
- } else {
- //文件
- if(name.indexOf(".bin") != -1) {
- console.log("这是bin文件");
- if(name.indexOf("_"+nowFileType) == -1){
- mui.alert("请使用 "+nowFileType +" 类型文件进行升级操作");
- return;
- }
- if(!lockOadWebview) {
- lockOadWebview = plus.webview.getWebviewById("lock-oadUpdate.html");
- }
- mui.fire(lockOadWebview, "oadInfa", {
- fileName: name,
- filePath: filepath
- })
- //跳转不了
- /*mui.openWindow({
- url: 'lock-oadUpdate.html',
- id: 'lock-oadUpdate.html'
- });*/
- mui.back();
- }
- }
- })
- })
- function init(filePath) {
- // 获得sd卡根目录
- document.querySelector('.mui-title').innerHTML = filePath;
- var File = plus.android.importClass("java.io.File");
- subRoot = new File(filePath);
- // 遍历sd卡根目录下的所有文件和文件夹
- var files = plus.android.invoke(subRoot, "listFiles");
- var len = files.length;
- var list = document.getElementById("list");
- var fragmentFolder = document.createDocumentFragment();
- var fragmentFile = document.createDocumentFragment();
- var li;
- for(var i = 0; i < len; i++) {
- var file = files[i];
- // 过滤隐藏文件
- if(!plus.android.invoke(file, "isHidden")) {
- var name = plus.android.invoke(file, "getName");
- li = document.createElement('li');
- li.className = 'mui-table-view-cell mui-media';
- li.setAttribute('name', name);
- // 判断是文件还是文件夹
- if(plus.android.invoke(file, "isDirectory")) {
- // 设置标志为文件夹,供后面使用
- li.setAttribute('data-type', 'Folder');
- // 读取文件夹下子文件夹及子文件数目
- var obj = readSonFilenum(file);
- li.innerHTML = '<a class="mui-navigate-right">' +
- '<img class="mui-media-object mui-pull-left" src="../img/folder.png">' +
- '<div class="mui-media-body">' + name +
- '<p class="mui-ellipsis">文件夹数量:' + obj.subFolderNum + ' 文件数量:' + obj.subFileNum + '</p></div></a>';
- fragmentFolder.appendChild(li);
- } else {
- li.setAttribute('data-type', 'File');
- // 读文件大小
- var fileSizeString = readFileSize(file);
- li.innerHTML = '<a class="mui-navigate-right">' +
- '<img class="mui-media-object mui-pull-left" src="../img/file.png">' +
- '<div class="mui-media-body mui-ellipsis">' + name +
- '<p class="mui-ellipsis">' + fileSizeString + '</p></div></a>';
- fragmentFile.appendChild(li);
- }
- };
- }
- list.appendChild(fragmentFolder);
- list.appendChild(fragmentFile);
- }
- </script>
- </body>
- </html>
复制代码 其中njs-io.js文件如下所示
- /**
- * 获得sd卡根目录
- */
- function getSDRoot(){
- // 导入android.os.Environment类对象
- var environment = plus.android.importClass("android.os.Environment");
- // 判断SD卡是否插入
- if(environment.getExternalStorageState() !== environment.MEDIA_MOUNTED){
- plus.nativeUI.toast('没有找到SD卡');
- return;
- }
- console.log("获取 Android 数据目录:"+environment.getDataDirectory());
- console.log("获取 Android 下载/缓存内容目录:"+environment.getDownloadCacheDirectory());
- console.log("获取外部存储目录即 SDCard:"+environment.getExternalStorageDirectory());
- console.log("获取外部存储设备的当前状态:"+environment.getExternalStorageState());
- //console.log("获取 Android 的根目录:"+getRootDirectory());
- return environment.getExternalStorageDirectory();
- }
- /**
- * 创建文件夹
- * @param {Object} path
- */
- function creatFolder(path){
- var File = plus.android.importClass("java.io.File");
- var fd = new File(path);
- if(!fd.exists()){
- fd.mkdirs();
- plus.nativeUI.toast("创建成功");
- }
- }
- /**
- * 删除文件(文件夹)
- * @param {Object} path
- */
- function deleteFile(path){
- var File = plus.android.importClass("java.io.File");
- var fd = new File(path);
- if (fd != null && fd.exists()){
- fd.delete();
- plus.nativeUI.toast("删除成功");
- }
- }
- /**
- * 读文件大小
- * @param {Object} file
- */
- function readFileSize(file){
- var FileInputStream = plus.android.importClass("java.io.FileInputStream");
- var fileSize = new FileInputStream(file);
- var size = fileSize.available();
- var fileSizeString;
- if(size == 0){
- fileSizeString = "0B";
- }else if(size < 1024){
- fileSizeString = size + "B";
- }else if(size < 1048576){
- fileSizeString = (size/1024).toFixed(2) + "KB";
- }else if (size < 1073741824){
- fileSizeString = (size/1048576).toFixed(2) + "MB";
- }else{
- fileSizeString = (size/1073741824).toFixed(2) + "GB";
- }
- return fileSizeString;
- }
- /**
- * 读取文件夹下子文件夹及子文件数目
- * @param {Object} file
- */
- function readSonFilenum(file){
- var subFile = plus.android.invoke(file,"listFiles");
- var subLen = subFile.length;
- var obj = {
- subFolderNum: 0,
- subFileNum: 0
- };
- for(var k=0;k<subLen;k++){
- if(!plus.android.invoke(subFile[k],"isHidden")){
- if(plus.android.invoke(subFile[k],"isDirectory")){
- obj.subFolderNum++;
- }else{
- obj.subFileNum++;
- }
- }
- }
- return obj;
- }
复制代码
|
|