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设置为创建/复制的文件和文件夹,以检查文件/文件夹是否需要覆盖. 一切正常工作,但从文件系统返回的毫秒数与设置的值不同. 我确定我的代码有问题,但我找不到. 提前谢谢了. 解决方法
所以也许我错过了一些,但我看到你的代码上面的一些问题.您的具体问题可能是由于(@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); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |