簡體   English   中英

為什么Java(Android?)將文件的最后修改日期設置為明天?

[英]Why is Java (Android?) setting my file's last modified date to tomorrow?

我正在使用以下命令在Android應用程序中創建文件:

FileOutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE);
fos.write(data);
fos.flush();
fos.close();

然后,稍后我嘗試進行一些清理,因此我將上次修改日期與某個閾值進行比較,但是比較結果表明文件的上次修改日期是明天的某個時候。 請記住,當我明天說的時候,這是相對於今天(文件修改日期)……可能是您正在閱讀的哪一天。

因此,基本上,如果我今天創建文件,並檢查文件的最后修改日期,則表示文件的最后修改日期是明天。

這是Java正在執行的操作,還是Android,還是正在執行的操作?

您的測試設備/仿真器將當前日期和時間顯示為什么? 聽起來好像它們設置不正確。

例如,設備上的時區是否設置為您當地時間以外的其他時間?

我正在處理類似的問題(有時不觸摸文件就更改了lastModified日期 ),但是找不到解決方法。

我創建了一個用於創建文件的測試,存儲由lastModified函數返回的值,並在對手機進行某些操作(我的設備為Galaxy S )后再次檢查此值。

我發現lastModified在工作時使用內部緩存,並且可以通過啟用/禁用USB模式(如果文件在SDCard )來清除此緩存。 我還認為,此Cache會在一定間隔后自動清除。 如果清除了緩存,則該函數讀取存儲在文件系統中的實際值。

如果您更改設備上的時區並清除cachelastModified函數將返回另一個時間(例如,時差取決於新時區,如果從GMT + 3更改為GMT + 4,則時差為1小時)。

此問題是100%可重現的。

假設您使用java.io.File.lastModified()來獲取上次修改的時間戳,您將獲取自1970年1月1日00:00:00 GMT以來的毫秒數。該時間戳隱式為GMT / UTC基於。

您應該檢查手機上可能使用FileOutputStream修改和創建的其他文件( 可能是照片)。 如果他們的修改日期也定為明天,則建議您向手機制造商提交錯誤報告。

我認為這是與手機有關的錯誤,因為您說在Nexus One上不會發生這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM