QPython 3C 的 SL4A 函数 - 外置卡读写
外置卡读写函数(新增):
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