移动文件(在同一磁盘内)意味着“复制和删除”吗?

8次阅读
没有评论

问题描述

使用Android 9 Pie系统的手机时,在同一存储卡中移动大文件夹到另一个位置的操作,实际上是先将数据复制并放置在新位置,随后才从旧位置删除。所有尝试过的方法都遵循了这一过程,并且如果SD卡没有足够的空间容纳两个版本的数据,则会终止操作并出现错误。

对于Android设备来说,直接移动文件并不像在PC上那样简单快捷。文件探索器通常会先执行复制再删除的两步流程。然而,有人指出可通过命令行使用mv命令实现真正的文件移动。这种方法是否适用于未通过ADB连接的非root手机呢?

解决方案

方法1:使用ADB进行操作

  • 前提条件
  • 确保已经安装了ADB。
  • 在电脑上安装Android调试桥接(ADB)支持的驱动。

操作步骤:

  1. 将手机以开发者模式连接到电脑,并确保USB调试开启。
  2. 打开命令行终端窗口,输入以下命令:
    bash
    adb shell
  3. 使用pwd找到当前目录位置。假设您想要将文件从内部存储复制并替换为目标位置的文件或文件夹,请使用如下命令:
  4. 移动文件:如要将从/mnt/media/internal/myfolder1/file.txt移动到/mnt/media/internal/mynewfolder2/,可采用以下方式:
    bash
    mv /mnt/media/internal/myfolder1/file.txt /mnt/media/internal/mynewfolder2/
  5. 离开ADB shell环境,并断开USB连接。

方法2:通过命令行直接操作

如果设备未root,则可以利用文件操作权限较低的情况下的替代方法。可以通过编写Shell脚本来进行手动的复制和删除。
前提条件
– 了解基础bash脚本知识。

示例脚本:

#!/bin/bash

# 原始文件位置
original_file=/mnt/media/internal/pictures/move_me.jpg
target_folder=/mnt/media/internal/documents/

# 检查是否为新目标路径创建文件夹
mkdir -p "$target_folder"

# 执行真正的移动动作(使用复制和删除实现)
cp --preserve=timestamps $original_file "$target_folder"
rm $original_file

echo "File moved successfully from $original_file to target folder: /mnt/media/internal/documents/"

方法3:利用root权限进行操作

  • 前提条件
  • 手机已被root。

对于已root的Android设备,可以使用文件浏览器应用(如es File Explorer或Solid Explorer)支持内置文件移动功能。在这些工具中直接进行拖放操作即可实现移动而不需复制。

方法4:等待官方改进

随着技术的进步和更新,未来可能会有新的API或者系统优化来改善Android文件处理的方式。关注有关Android新版本的功能更新,以期待更加高效的直接移动解决方案出现。

通过上述方法中的任一种方式,可以在不兼容的操作环境下尝试实现真正意义上的文件移动操作。尽管目前而言根权限是较常见的选项,但命令行方法以及ADB工具同样提供了相对灵活且有效的途径来执行所需的任务。

正文完