除非卸载了Android SD卡,否则FileUtils.copyDirectory不会正确修改日期

时间:2014-05-21 09:07:17

标签: android apache-commons fileutils

除非卸载Android SD卡,否则

FileUtils.copyDirectory不能正确修改日期。使用FileUtils中的这段简单代码:

    try {
        FileUtils.copyDirectory(srcDir2, destDir2);
    } catch (IOException e) {

我可以将目录从手机的内部存储器复制到SD卡,保留目录中文件的日期修改信息,这对我的应用程序至关重要。

遗憾的是,如果删除了SD卡而未将其弹出,则复制目录中文件的所有日期修改信息都将设置为文件复制的时间。如果正确卸载SD,则会正确保留修改日期的信息。

我尝试过刷新和关闭功能,但它们与这种文件无关。在没有卸载的情况下,我最终确定目录的代码是什么?我正在使用一个Android设备将是一个全尺寸的SD插槽,如果没有正确弹出它被淘汰,我不能丢失所有信息

1 个答案:

答案 0 :(得分:0)

这个方法的一个版本接受一个标志作为第三个参数来试图控制上次修改的日期。您可以查看文档here。但看起来您正在使用的方法也会尝试默认保留日期。实际上,在阅读源代码时,您使用的方法只是将第三个参数设置为true来调用此方法。

在您的方法的文档中,它被说:

  

注意:此方法尝试使用File.setLastModified(long)保留文件的上次修改日期/时间,但不保证这些操作将成功。如果修改操作失败,则不提供指示。

最后,每次复制文件或目录时,此库的作用是使用源文件的最后修改日期在目标文件上调用File.setLastModified。据报道,此方法在Android中不可靠,您可以在以下其他问题中看到:

Android set last modified time for the file
file.lastModified() is never what was set with file.setLastModified()
Is it possible to reset the last modified date of an Android file?

但是在你的情况下,我认为你正试图为那些以这种方式设计的东西提供一种解决方法。我不是专家,但这是由OS或FileSystem管理的。卸载机制有一个目的,我认为你作为一个app开发者不能做太多。