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

标签 java android file

我正在从 Internet 下载文件并将流数据保存到我的应用程序内部存储中由 getFilesDir() 提供的临时文件中.

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

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

最佳答案

使用以下代码将文件从内存复制到 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();
    }
}

而且 - 它有效...

关于java - 如何在 Android 上将文件从内部应用存储移动/重命名到外部存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4770004/

相关文章:

java相对路径

java - Log4j 定义组合模式的长度

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : Communications link failure

android - android中的临时文件夹

python - 如何使用 python 将多个数据框中存在的特定列写入列表?

multithreading - 关闭申请后的文件复制

java - 如何在 ActionListener 中创建类似 lambda 的模式

带有 Facebook 登录示例的 java.lang.RuntimeException

android - OpenCV 中的 Photoshop Vibrance 效果

c - 将文件内容导入C中的结构