如何在Android上将文件从内部应用程序存储移动/重命名到外部存储?

2022-09-01 07:07:49

我正在从互联网下载文件,并将流数据保存到getFilesDir()给出的应用程序内部存储中的临时文件中。

下载完成后,我需要将临时文件移动到外部存储器(通常是SD卡)上的下载目录。但是由于某种原因,File.renameTo()不适用于此。我猜有一个问题,因为它是两个独立的文件系统,但我仍然可以直接下载到SD卡,文件URI是正确的。

有没有另一种简单快捷的方法来将该文件从内部存储器传输到外部存储器,或者我是否必须执行字节流复制并删除原始文件?


答案 1

使用以下代码将文件从内部存储器复制到SD卡,反之亦然:

public static void copyFile(File src, File dst) throws IOException
{
    FileChannel inChannel = new FileInputStream(src).getChannel();
    FileChannel outChannel = new FileOutputStream(dst).getChannel();
    try
    {
        inChannel.transferTo(0, inChannel.size(), outChannel);
    }
    finally
    {
        if (inChannel != null)
            inChannel.close();
        if (outChannel != null)
            outChannel.close();
    }
}

而且-它的工作原理...


答案 2

内部和外部存储器是两种不同的文件系统。因此,renameTo() 将失败。

您将必须复制文件并删除原始文件