[英]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
會在一定間隔后自動清除。 如果清除了緩存,則該函數讀取存儲在文件系統中的實際值。
如果您更改設備上的時區並清除cache
則lastModified函數將返回另一個時間(例如,時差取決於新時區,如果從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.