欢迎光临散文网 会员登陆 & 注册

QPython 3C 的 SL4A 函数 - 外置卡读写

2022-09-27 02:49 作者:乘着船  | 我要投稿

外置卡读写函数(新增):


documentTreeShowOpen( rootPath = '/sdcard' ) (推荐)

documentFileShowOpen( rootPath =  '/sdcard' )

外置卡打开目录树(根路径(默认为"/sdcard"))。

以上俩函数功能相同,都是:

打开外置存储卡写入或者"/sdcard/Android/<子目录>"读写权限请求窗口。

如果授权成功,返回Uri路径 , 如果授权失败,返回None 。

使用这两个函数和以下函数,读写外置存储设备或者"/sdcard/Android/<子目录>" ,

documentFile类函数速度非常慢。

1.对于外置存储设备 :

  使用 rootPath = "/storage/ABCD-EFGH" 或者 "/mnt/ext_sdcard" , 返回 "content://com.android.externalstorage.documents/<Content子路径>" .

2.对于"/sdcard/Android/<子路径>" :

    (1) 在 Android  7-10 , 使用 rootPath = "/sdcard/Android/data" , 返回 "file://<路径>" ;

    (2) 在 Android 11-13 , 使用 rootPath = "/sdcard/Android/data/the.package.name" , 返回 "content://com.android.externalstorage.documents/<Content子路径>" 。


documentFileMkdir( Dir ) (推荐)

documentFileMkdirs( Dir )

外置卡新建一级/多级文件夹(文件夹路径)。

以上俩函数功能相同。

如果成功返回True。


documentFileCopy( SrcFileOrTree, DestFileOrTree )

外置卡复制单个文件/目录树(源,目标)

返回None。


documentFileRenameTo( Src, Dest ) (推荐)

documentFileMoveTo( Src, Dest )

移动或重命名_文件或目录树(源路径,目标路径)。

以上俩函数功能相同。


documentFileDelete( FileOrTree )

外置卡删除(文件或目录树)

如果成功返回True。


documentFileListFiles( Folder )

外置卡获取文件列表(目录)

返回目录的文件列表。


documentFileIsDirectory(path)

外置卡路径是否为目录(路径),

如果路径不存在或不可用,将返回None。


documentFileGetUri(path, isDirectory = None)

外置卡根据指定路径返回 "content://com.android.externalstorage.documents/<Content路径>"

路径(字符串)

是否目录(布尔可选):

    True - 必须是一个目录,如果目录不存在,将会自动创建一个空目录;

    False - 必须不是一个目录,如果文件不存在,将会创建一个空文件;

    None - 不知道它是否是个目录,如果不存在,也不会创建任何东西。


documentFileInputStream( srcFile, EncodingFormat )

外置卡读取文件(源文件名,编码格式)

如果编码格式被省略(默认为空),这个函数返回Bytes;

如果编码格式是Base64,这个函数返回Base64字符串;

如果编码格式是UTF-8或GBK等,这个函数返回普通字符串。


documentFileOutputStream( destFile, src, EncodingFormat )

外置卡写入文件(目标文件,源数据,编码格式)

如果编码格式被省略(默认为空),源数据是Bytes;

如果编码格式是Base64, 源数据是Base64字符串;

如果编码格式是UTF-8或GBK等,源数据是普通字符串;

这个函数总是返回None。


documentFileGetStat(path)

外置卡获取文件统计信息(路径)。

返回一个dict,包含文件大小、上次修改时间、文件是否可读写。

如果路径不存在或不可用,返回None。


getFileStat(path)

获取文件统计信息(路径)。

包含内部存储和外置卡,返回一个dict,包含文件大小、上次修改时间、文件是否可读写和所在存储器空间。


获取外置卡写入权限后,documentFileGetStat的canWrite属性为True,不可获取存储器空间;但是getFileStat的canWrite属性为False,可以获取存储器空间。


示例(Android 13):

QPython 3C -- 项目和脚本 -- Media_QPy --应用列表



选择“电话本” -- 查看根文件



授权“允许”



即可看到Android/data下的content://路径,即授权成功



访问"/sdcard/Android/data/the.package.name"视频演示:

https://www.bilibili.com/BV1694y1G7jF

QPython 3C (Python 3.11) 视频演示:

https://www.bilibili.com/BV1NL411G7XX

如果需要 QPython 3C 源代码/Apk,请点击以下链接:

作者:乘着船@Bilibili

更多文章+下载链接:https://www.bilibili.com/read/readlist/rl321663


QPython 3C 的 SL4A 函数 - 外置卡读写的评论 (共 条)

分享到微博请遵守国家法律