加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – file.lastModified()从来没有设置与file.setLastModifie

发布时间:2020-12-14 05:49:22 所属栏目:Java 来源:网络整理
导读:我在Nexus One上的 Android 2.3.4上设置和阅读了毫无疑问的问题.这是代码: File fileFolder = new File(Environment.getExternalStorageDirectory(),appName + "/" + URLDecoder.decode(folder.getUrl()));if (fileFolder != null !fileFolder.exists()) {
我在Nexus One上的 Android 2.3.4上设置和阅读了毫无疑问的问题.这是代码:
File fileFolder = new File(Environment.getExternalStorageDirectory(),appName + "/"
    + URLDecoder.decode(folder.getUrl()));
if (fileFolder != null && !fileFolder.exists()) {
  fileFolder.setLastModified(1310198774);
  fileFolder.mkdirs();
  fileFolder.setLastModified(1310198774);
}

if (fileFolder != null && fileFolder.exists()) {
  long l = fileFolder.lastModified();
}

在这个小测试中我写了1310198774,但是从lastModified()返回的结果是1310199771000.

即使我剪掉了尾随的“000”,差不多几分钟.

我需要在webservice和Android设备之间同步文件.最后一次修改是该服务发送的数据的一部分.我将millis设置为创建/复制的文件和文件夹,以检查文件/文件夹是否需要覆盖.

一切正常工作,但从文件系统返回的毫秒数与设置的值不同.

我确定我的代码有问题,但我找不到.

提前谢谢了.
HJW

解决方法

所以也许我错过了一些,但我看到你的代码上面的一些问题.您的具体问题可能是由于(@JB提到的)Android问题,但是对于后代,我以为我会提供一个答案.

首先,File.setLastModified()花费几毫秒的时间.这是javadocs.你似乎试图在几秒钟内设置它.所以你的代码应该是这样的:

fileFolder.setLastModified(1310198774000L);

如在javadoc中所提到的,许多文件系统只支持最后修改时间的秒粒度.因此,如果您需要在文件中看到相同的修改时间,那么您应该执行以下操作:

private void changeModificationFile(File file,long time) {
    // round the value down to the nearest second
    file.setLastModified((time / 1000) * 1000);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读