更新记录

1.0.1(2021-06-21)

1.优化文件读取速度
2.新增对内存存储中文件或文件夹的增,删,改,查等操作的方法
3.新增获取文件的校验信息方法,可设置MD5,SHA1,SHA256参数
4.新增对文件的移动复制等操作方法
5.新增重命名文件方法

1.0.0(2021-02-03)

1.初始化项目 2.支持指定内部存储中的目录 3.支持筛选文件类型


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


K-FileUtilsModule 简介

Android文件操作类封装,Android原生插件,如获取内部存储中某个目录下的,某些文件类型的,所有文件,支持如下:

  1. 支持设置目录,获取内部存储中某个目录下的所有文件
  2. 支持设置筛选文件类型
  3. 返回文件的名字,路径,最后修改时间,大小等
  4. 支持获取文件的校验信息,可设置MD5,SHA1,SHA256参数
  5. 支持对内存存储中文件或文件夹的增,删,改,查等操作
  6. 支持对文件的移动复制操作
  7. 支持重命名文件方法
  8. 支持错误回调,若没有获取成功,会有错误回调提示

使用说明

1. getFilesAsync方法,获取某个目录下所有文件方法,调用示例如下:
/**
 * 获取内部存储绝对路径,异步方法,方便getFilesAsync方法调用
 * 大部分android手机外部存储路径为“/storage/emulated/0”,但也有可能对于深度定制手机,可能不是这个,所以把这个开放出来
 */
getExternalStorageDirectory() {
    const plugin = uni.requireNativePlugin('K-FileUtilsModule');
    plugin.getExternalStorageDirectory({},
    result = >{
        console.log(result);
        this.content = result;
    });
},
/**
 * 获取手机所有文件,即默认所有参数不传
 * 异步方法,因获取存储中所有文件,比较耗时,请耐心等待
 */
getFilesAsync() {
    uni.showLoading({
        title: '请稍后...'
    });
    const plugin = uni.requireNativePlugin('K-FileUtilsModule');
    plugin.getFilesAsync({},
    result = >{
        uni.hideLoading();
        //这里loading可能会先消失,然后待一段时间才会在ui上显示,原因是数据大多,ui渲染需要时间,这里用户可根据自己情况自行优化,这里建议拿到所有数据后,先渲染前10条,再继续向下渲染
        this.content = JSON.stringify(result);
    });
},
/**
 * 传参示例,获取手机内部存储DCIM文件夹下的所有图片文件
 * path: 内部存储中某个文件夹的绝对路径,默认不传此参数为,内部存储中所有文件
 * fileTypes:筛选文件的类型(文件的后缀名),默认不传此参数,为所有文件类型都搜索出来;这里列举出两个样例:
 * 所有图片:let arrPic = ["jpg", "png", "jpeg", "bmp", "tif", "gif", "pcx", "tga", "exif", "fpx", "svg", "psd"];
   所有视频:let arrVideo = ["mp4", "rm", "rmvb", "mpeg", "mov", "mtv", "wmv", "avi", "3gp", "amv", "dmv", "flv", "mkv","mpg","mk", "m4v"];
 * isNeedRareFiles:是否筛选出一些少见的文件,如可能会有一些系统文件,这类文件不带后缀名,不常见的文件,默认不传此参数,不搜索出这类文件,如果想要这些文件,请设置为true
 */
getFilesAsyncPicInDCIM() {
    uni.showLoading({
        title: '请稍后...'
    });
    const plugin = uni.requireNativePlugin('K-FileUtilsModule');
    //主线程同步方法
    plugin.getExternalStorageDirectory({},
    result = >{
        let pathSdcard = result;
        //所有图片
        let arrPic = ["jpg", "png", "jpeg", "bmp", "tif", "gif", "pcx", "tga", "exif", "fpx", "svg", "psd"];
        //所有视频
        let arrVideo = ["mp4", "rm", "rmvb", "mpeg", "mov", "mtv", "wmv", "avi", "3gp", "amv", "dmv", "flv", "mkv", "mpg", "mk", "m4v"];
        plugin.getFilesAsync({
            path: pathSdcard + '/DCIM',
            fileTypes: arrPic
        },
        result = >{
            uni.hideLoading();
            console.log(JSON.stringify(result));
            this.content = JSON.stringify(result);
        });
    });
}
getFilesAsync方法,传参说明:
参数 类型 默认值 说明
path String 不传此参数为手机所有文件 指定内部存储某个目录下的所有文件,用法示例,可参看[调用方法]中的代码示例
fileTypes Array 不传此参数为全部文件类型 筛选文件的类型(文件的后缀名),默认不传此参数,为所有文件类型都搜索出来;这里列举出两个样例:所有图片:let arrPic = ["jpg", "png", "jpeg", "bmp", "tif", "gif", "pcx", "tga", "exif", "fpx", "svg", "psd"];所有视频:let arrVideo = ["mp4", "rm", "rmvb", "mpeg", "mov", "mtv", "wmv", "avi", "3gp", "amv", "dmv", "flv", "mkv","mpg","mk", "m4v"];
isNeedRareFiles Boolean 不传此参数,不需要稀有文件 是否筛选出一些稀有少见的文件,如可能会有一些系统文件,这类文件不带后缀名,不常见的文件,默认不传此参数,不搜索出这类文件,如果想要这些文件,请设置为true
getFilesAsync方法,返回参数说明
{
"code":"0",
"msg":"success",
"data":[
    {
        "name":"IMG_20210202_162658.jpg",//文件名字
        "lastModifiedTime":1612254420000,//文件最后修改时间
        "path":"/storage/emulated/0/DCIM/Camera/IMG_20210202_162658.jpg",//文件路径
        "size":12344 //文件大小
    },
    {
        "name":"IMG_20210202_162649.jpg",
        "lastModifiedTime":1612254411000,
        "path":"/storage/emulated/0/DCIM/Camera/IMG_20210202_162649.jpg",
        "size":12344 //文件大小
    }
    ]
}
2.getFileInfo方法,获取文件信息,如大小,时间,校验信息等,调用示例如下:
const plugin = uni.requireNativePlugin('K-FileUtilsModule');
plugin.getFileInfo({ path: '/storage/emulated/0/DCIM/Camera/IMG_20210202_162649.jpg', digestType: 'SHA1' }, result2 => {
    this.content = JSON.stringify(result2);
    console.log(this.content);
});
getFileInfo方法,传参说明:
参数 类型 默认值 说明
path String 文件的全路径,必传
digestType String 若不传此参数,则不返回校验信息 校验信息类型,可传值:MD5,SHA1,SHA256,若不传此参数,则不返回校验信息
getFileInfo方法,返回参数说明
{
"code":"0",
"msg":"success",
"data":{
        "name":"IMG_20210202_162658.jpg",//文件名字
        "lastModifiedTime":1612254420000,//文件最后修改时间
        "path":"/storage/emulated/0/DCIM/Camera/IMG_20210202_162649.jpg",//路径
        "size":12344, //文件大小
        "digest":"f09b89ciea00d0e00d0e00dw002"
    }
}
3.copyFile方法,复制文件方法,调用示例如下:
const plugin = uni.requireNativePlugin('K-FileUtilsModule');
plugin.copyFile({ sourcePath: '/storage/emulated/0/DCIM/Camera/IMG_20210202_162649.jpg', targetPath: '/storage/emulated/0/KCamera/IMG_20210202_162649.jpg' }, result2 => {
    this.content = JSON.stringify(result2);
    console.log(this.content);
});
copyFile方法,传参说明:
参数 类型 默认值 说明
sourcePath String 必填 源文件路径,要传全的哦
targetPath String 必填 要复制到的文件路径,也是全的哦,最后复制的目标文件名字,以targetPath为主,如targetPath设置为"//8888888.jpg",最后目标文件的名字为8888888.jpg;此外若目标文件存在会覆盖的哦
4.moveFile方法,移动文件方法,用法与copyFile方法类似,不赘述
5.renameFile方法,重命名文件方法,调用示例如下:
const plugin = uni.requireNativePlugin('K-FileUtilsModule');
plugin.renameFile({ oldPath: '/storage/emulated/0/DCIM/Camera/IMG_20210202_162649.jpg', newPath: '/storage/emulated/0/DCIM/Camera/myname.jpg' }, result2 => {
    this.content = JSON.stringify(result2);
    console.log(this.content);
});
renameFile方法,传参说明:
参数 类型 默认值 说明
oldPath String 必填 原来的文件路径,要全的哦
newPath String 必填 要重命名文件的全路径,也是要全的哦 注意,此方法,两个文件要在同一目录下才能成功,若不在同一目录下,请调用移动方法
6.deleteFile方法,删除文件方法,调用示例如下:
const plugin = uni.requireNativePlugin('K-FileUtilsModule');
plugin.deleteFile({ path: '/storage/emulated/0/DCIM/Camera/IMG_20210202_162649.jpg' }, result2 => {
    this.content = JSON.stringify(result2);
    console.log(this.content);
});
deleteFile方法,传参说明:
参数 类型 默认值 说明
path String 必填 要删除的文件路径,要全的哦
7.问题汇总:

(1).若返回的路径无法使用(如,在image组件中无法展示,uni.uploadFile无法识别到本路径),请在返回后的相关路径前加"file://"再尝试使用

8.Demo下载

您可下载Demo安装到手机上,参看一下效果,本Demo包括了作者开发的大部分插件,您可以进入相应插件模块查看效果,Demo中实现的效果只是常用举例且功能有限,而且并不及时更新,所以用户还是应以详细文档中的说明为准,参数自由组合实现想要的功能。Demo下载链接如下:
https://pan.baidu.com/s/1YMLAx21N2p5sirJqwkLJoA 提取码: awh9

9.联系方式:

若有插件问题或需求,可以评论留言描述,或加本人QQ
我的QQ是:3516626205 (加好友麻烦备注:uni文件操作插件)
支持付费定制
(2)关于售后:
a.承诺bug类问题,终身免费维护
b.新功能新需求类,若两个小时能完成的小工作量功能,免费完善

本sdk的使用许可,详见HBuilder X使用许可协议

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问