0

FileUtils.copyDirectory除非卸载 Android SD 卡,否则不会正确写入修改日期。使用 FileUtils 中的这段简单代码:

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

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

可悲的是,如果 SD 卡被移除而不弹出它,则复制目录中文件的所有修改日期信息都设置为复制文件的时间。如果 SD 已正确卸载,则修改日期信息将正确保留。

我已经尝试过刷新和关闭功能,但它们与这种文件无关。我缺少什么代码来完成目录而不卸载?我正在使用一个 android 设备将一个全尺寸的 SD 插槽,如果它在没有正确弹出的情况下被击倒,我不能冒险丢失所有信息

4

1 回答 1

0

此方法有一个版本,它接受一个标志作为第三个参数,以尝试控制上次修改的日期。您可以在此处查看文档。但看起来您使用的方法也尝试默认保留日期。其实看源码,你使用的方法就是调用这个方法,第三个参数设置为true。

在您的方法的文档中说:

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

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

Android 为文件
file.lastModified() 设置的最后修改时间绝不是使用 file.setLastModified() 设置的时间
是否可以重置 Android 文件的最后修改日期?

但就您而言,我认为您正在尝试为以这种方式设计的东西提供一种解决方法。我不是专家,但这由操作系统或文件系统管理。卸载机制是有目的的,我认为作为应用程序开发人员,你不能做太多事情。

于 2014-05-21T10:00:05.253 回答