You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 11用SimpleStorage API复制文件报NO_SPACE_LEFT_ON_TARGET_PATH(空间充足)

问题分析与解决方案

核心原因

出现NO_SPACE_LEFT_ON_TARGET_PATH错误并非真的存储空间不足,大概率是以下问题导致:

  • 目标路径权限受限:Android 10及以上采用分区存储机制,硬编码/sdcard/Left这类绝对路径可能无法获取正确的写入权限,导致API误判空间不足。
  • 路径指向错误:硬编码路径可能未指向你预期的有20GB剩余空间的存储分区,比如混淆了内置存储和外接SD卡路径,或该路径实际不存在。

解决办法

1. 替换硬编码路径为SAF获取的目标目录URI

不要直接使用绝对路径,改用ACTION_OPEN_DOCUMENT_TREE让用户选择目标备份目录,获取其URI后再执行复制:

// 先通过SAF获取目标目录的URI(逻辑同选择源文件夹)
// 假设已获取目标目录URI为targetTreeUri
DocumentFile targetDir = DocumentFile.fromTreeUri(this, targetTreeUri);

// 修改savefile函数,用目标目录DocumentFile替代绝对路径
public void savefile(Uri sourceuri) {
    DocumentFile sourceFile = DocumentFileCompat.fromUri(this, sourceuri);
    DocumentFileUtils.copyFileTo(sourceFile, targetDir, null, new FileCallback() {
        @Override
        public void onConflict(@NotNull DocumentFile destinationFile, @NotNull FileCallback.FileConflictAction action) {
            // 处理文件冲突,比如选择覆盖
            action.override();
        }

        @Override
        public void onCompleted(@NotNull Object result) {
            // 复制完成逻辑
        }

        @Override
        public void onReport(Report report) {
            Log.d("Progress", String.valueOf(report.getProgress()));
        }

        @Override
        public void onFailed(ErrorCode errorCode) {
            Log.d("Error", errorCode.toString());
        }
    });
}

2. 验证目标路径的真实可用空间

在复制前先检查目标路径的实际剩余空间,确认是否真的充足:

public long getAvailableSpace(String path) {
    StatFs statFs = new StatFs(path);
    long blockSize = statFs.getBlockSizeLong();
    long availableBlocks = statFs.getAvailableBlocksLong();
    return availableBlocks * blockSize;
}

// 使用示例
long freeSpace = getAvailableSpace("/sdcard/Left");
Log.d("Free Space", freeSpace / (1024*1024) + "MB");

如果返回的剩余空间远小于预期,说明路径指向错误,需要确认目标路径的正确性。

3. 检查SimpleStorage API适配性

确保使用的SimpleStorage库版本适配当前Android系统版本,避免因API兼容问题导致路径解析错误,建议使用最新稳定版。

内容的提问来源于stack exchange,提问作者Josh Hunter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:15:45