提交 30e176f0 编写于 作者: 杜庆泉's avatar 杜庆泉

移除 uts-file-manager 相关示例

上级 1928d1f0
...@@ -91,13 +91,6 @@ ...@@ -91,13 +91,6 @@
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
}, },
{
"path": "pages/resource/fileRead",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
},
{ {
"path": "pages/advance/android/decorview", "path": "pages/advance/android/decorview",
"style": { "style": {
......
...@@ -61,9 +61,6 @@ ...@@ -61,9 +61,6 @@
pages: [{ pages: [{
name: "图片加载示例", name: "图片加载示例",
url: "resource/resource" url: "resource/resource"
},{
name: "文件读取示例",
url: "resource/fileRead"
}] }]
}, },
{ {
......
<template>
<view>
<page-head :title="title"></page-head>
</view>
</template>
<script>
export default {
data() {
return {
title: '文件读取示例-todo',
}
},
methods: {
}
}
</script>
<style>
</style>
<template>
<view>
<page-head :title="title"></page-head>
<view class="uni-btn-v uni-common-mt">
<button type="primary" @tap="getImageBase64">读取图片base64</button>
<button type="primary" @tap="getFileText">读取文本内容</button>
</view>
</view>
</template>
<script>
import {getFileSystemManager} from '@/uni_modules/uts-file-manager'
export default {
data() {
return {
title: '文件读取示例',
logo:""
}
},
methods: {
getImageBase64:function(e){
let fileManager = getFileSystemManager()
fileManager.readFile({
encoding:'base64',
filePath:'static/logo.png',
success:function(res){
console.log("success")
console.log(res)
},
fail:function(res){
console.log('fail')
console.log(res)
},
complete:function(res){
console.log("complete")
console.log(res)
}
})
},
getFileText:function(e){
let fileManager = getFileSystemManager()
fileManager.writeFile({
filePath:'/test/1.txt',
data:'锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦',
success:function(res){
fileManager.readFile({
encoding:'utf-8',
filePath:res.filePath,
success:function(res){
console.log("success")
console.log(res)
},
fail:function(res){
console.log('fail')
},
complete:function(res){
console.log("complete")
}
})
},
fail:function(res){
console.log('fail')
},
complete:function(res){
console.log("complete")
}
})
}
}
}
</script>
<style>
</style>
{
"id": "uts-file-manager",
"displayName": "uts-file-manager",
"version": "1.0.0",
"description": "uts-file-manager",
"keywords": [
"uts-file-manager"
],
"repository": "",
"engines": {
"HBuilderX": "^3.6.8"
},
"dcloudext": {
"type": "uts",
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "",
"data": "",
"permissions": ""
},
"npmurl": ""
},
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "u",
"aliyun": "u"
},
"client": {
"Vue": {
"vue2": "u",
"vue3": "u"
},
"App": {
"app-android": "u",
"app-ios": "u"
},
"H5-mobile": {
"Safari": "u",
"Android Browser": "u",
"微信浏览器(Android)": "u",
"QQ浏览器(Android)": "u"
},
"H5-pc": {
"Chrome": "u",
"IE": "u",
"Edge": "u",
"Firefox": "u",
"Safari": "u"
},
"小程序": {
"微信": "u",
"阿里": "u",
"百度": "u",
"字节跳动": "u",
"QQ": "u",
"钉钉": "u",
"快手": "u",
"飞书": "u",
"京东": "u"
},
"快应用": {
"华为": "u",
"联盟": "u"
}
}
}
}
}
\ No newline at end of file
# uts-file-manager
### 开发文档
[UTS 语法](https://uniapp.dcloud.net.cn/tutorial/syntax-uts.html)
[UTS API插件](https://uniapp.dcloud.net.cn/plugin/uts-plugin.html)
[UTS 组件插件](https://uniapp.dcloud.net.cn/plugin/uts-component.html)
[Hello UTS](https://gitcode.net/dcloud/hello-uts)
\ No newline at end of file
import { ReadFileSuccessResult, ReadFileOptions } from "../interface.uts"
import { WriteFileSuccessResult, WriteFileOptions } from "../interface.uts"
import { GetFileSystemManager,FileSystemManager} from "../interface.uts"
import { UniErrorSubject, UniErrors } from "../unierror.uts"
import File from "java.io.File"
import Base64 from "android.util.Base64"
export { ReadFileOptions, WriteFileOptions } from "../interface.uts"
class AndroidFileSystemManager implements FileSystemManager{
public readFile(options : ReadFileOptions) {
// 判断type 是否合法
if(options.encoding != 'base64' && options.encoding != 'utf-8'){
let err = new UniError(UniErrorSubject, 1200002, UniErrors.get(1200002)!);
options.fail?.(err)
options.complete?.(err)
return
}
let filePath = UTSAndroid.convert2AbsFullPath(options.filePath)
let targetFile = new File(filePath)
if (!targetFile.exists()) {
let err = new UniError(UniErrorSubject, 1300002, UniErrors.get(1300002)! + filePath);
options.fail?.(err)
options.complete?.(err)
return
}
if (targetFile.isDirectory()) {
let err = new UniError(UniErrorSubject,1301003,UniErrors.get(1301003)!);
options.fail?.(err)
options.complete?.(err)
return
}
/**
* 文件超过16M,会超过应用内存
*/
if (targetFile.length() > 16 * 1024 * 1024) {
let err = new UniError(UniErrorSubject,1300202,UniErrors.get(1300202)!);
options.fail?.(err)
options.complete?.(err)
return
}
let currentDispatcher = UTSAndroid.getDispatcher()
/**
* 执行真正的加载行为,为了避免阻塞分发到 io任务序列
*/
UTSAndroid.getDispatcher('io').async(function(_){
let ret : ReadFileSuccessResult = {
data : ""
}
if(options.encoding == 'base64'){
// base64
let byteArray = targetFile.readBytes()
let base64Content = Base64.encodeToString(byteArray,Base64.NO_WRAP)
ret.data = base64Content
}else{
// text
let text = targetFile.readText()
ret.data = text
}
currentDispatcher.async(function(_){
options.success?.(ret)
options.complete?.(ret)
})
},null)
}
public writeFile(options : WriteFileOptions) {
// 判断type 是否合法
let nextFile = new File(UTSAndroid.getAppContext()?.getFilesDir(),options.filePath)
if(nextFile.exists() && nextFile.isDirectory()){
// 出错了,目标文件已存在,并且是个目录
let err = new UniError(UniErrorSubject,1301003,UniErrors.get(1301003)!);
options.fail?.(err)
options.complete?.(err)
return
}
let currentDispatcher = UTSAndroid.getDispatcher()
UTSAndroid.getDispatcher('io').async(function(_){
/**
* 如果上一级目录不存在,创建之
*/
if(!nextFile.parentFile!.exists()){
nextFile.parentFile!.mkdirs()
}
if(!nextFile.exists()){
nextFile.createNewFile()
}
// 写入文本,暂时只支持覆盖写入
nextFile.writeText(options.data)
let ret : WriteFileSuccessResult = {
filePath: nextFile.getPath()
}
currentDispatcher.async(function(_){
options.success?.(ret)
options.complete?.(ret)
})
},null)
}
}
export const getFileSystemManager:GetFileSystemManager = function ():FileSystemManager {
return new AndroidFileSystemManager()
};
export type ReadFileSuccessResult = {
data: string
}
export type ReadFileSuccessCallback = (res: ReadFileSuccessResult) => void
export type ReadFileFailCallback = (res: UniError) => void
export type ReadFileCompleteCallback = (res: any) => void
export type ReadFileOptions = {
/**
* base64 / utf-8
*/
encoding: string,
/**
* 文件路径,支持相对地址和绝对地址
*/
filePath: string,
/**
* 接口调用的回调函数
*/
success?: ReadFileSuccessCallback | null,
/**
* 接口调用失败的回调函数
*/
fail?: ReadFileFailCallback | null,
/**
* 接口调用结束的回调函数(调用成功、失败都会执行)
*/
complete?: ReadFileCompleteCallback | null
}
export type WriteFileSuccessResult = {
filePath: string,
}
export type WriteFileSuccessCallback = (res: WriteFileSuccessResult) => void
export type WriteFileFailCallback = (res: UniError) => void
export type WriteFileCompleteCallback = (res: any) => void
export type WriteFileOptions = {
/**
* 文件路径,只支持绝对地址
*/
filePath: string,
/**
* 写入的文本内容
*/
data: string,
/**
* 接口调用的回调函数
*/
success?: WriteFileSuccessCallback | null,
/**
* 接口调用失败的回调函数
*/
fail?: WriteFileFailCallback | null,
/**
* 接口调用结束的回调函数(调用成功、失败都会执行)
*/
complete?: WriteFileCompleteCallback | null
}
export interface FileSystemManager {
readFile(options: ReadFileOptions): void;
writeFile(options: WriteFileOptions): void;
}
export type GetFileSystemManager = () => FileSystemManager;
export interface Uni {
/**
* 获取文件管理器
* @uniPlatform {
* "app": {
* "android": {
* "osVer": "4.4.4",
* "uniVer": "√",
* "unixVer": "3.9.0"
* },
* "ios": {
* "osVer": "x",
* "uniVer": "x",
* "unixVer": "x"
* }
* }
* }
* @uniVueVersion 2,3 //支持的vue版本
*/
getFileSystemManager: GetFileSystemManager
}
/**
* 错误主题
*/
export const UniErrorSubject = 'uni-file-manager';
/**
* 错误码
* @UniError
*/
export const UniErrors:Map<number, string> = new Map([
[1200002, 'type error. only support base64 / utf-8'],
[1300002, 'no such file or directory'],
[1301003, 'illegal operation on a directory'],
[1300202, 'the maximum size of the file storage limit is exceeded'],
]);
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册