[英]Is it possible to get last modified date from an assets file?
奇怪的問題:是否有可能在資產文件夾中獲取文件的最后修改日期,或者這是毫無意義和不可能的?
我問,因為我在應用程序啟動時將一個只讀數據庫復制到數據文件夾中,但是如果現有文件比存儲在assets文件夾中的文件舊(或者如果文件),則只會執行復制不存在)。
如果那不可能,任何人都知道一個更好的約定? 如果需要,我可以在一個單獨的問題中發布。 TIA!
數據庫有多大/多復雜? 您可能會發現使用SQLiteOpenHelper
實例來處理此問題更容易,也更靈活,因為getReadableDatabase()
調用getReadableDatabase()
,它就會在必要時創建數據庫,並調用onUpgrade
為您升級數據庫。
您所要做的就是提供onCreate()
來創建數據庫,提供onUpgrade()
進行升級,並在數據庫版本發生變化時增加數據庫版本(在onUpgrade()
),Android將為您處理創建和升級數據庫。
或者,(我還沒有嘗試過),看起來AssetManager.list()
可以為您提供資產路徑列表,接下來,使用File (String path)
獲取數據庫的File對象,最后File.lastModified()
獲取修改日期。
嘿,我和你有同樣的問題。 我想復制和資產只是在它更新的時候。 所以我讓sharedPreferences存儲了最后安裝的版本,並用它來比較日期:
我在strings.xml文件中添加一個條目來保存應用程序版本:
<string name="version">0.3</string>
然后我在主類的onCreate方法上放了一個if子句:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if( Float.parseFloat(getString(R.string.version)) > prefs.getFloat("LastInstalledVersion", (float) 0.0 ) ) {
copyfiles();
}
我將新版本字符串添加到onPause方法的sharedPreferences上,這樣就可以在再次調用onCreate之前添加它:
SharedPreferences prefs= PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.putFloat("LastInstalledVersion", Float.parseFloat(getString(R.string.version)) );
editor.commit();
可能比在文件本身中使用版本名稱更簡單。
請注意,如果您的版本高於0.0,則復制文件將在第一次打開應用程序時運行,並且只有在更高版本中增加版本字符串時才會再次運行。
請記住,此示例僅在您有一個要比較的文件或不關心單個文件版本時才有效。 否則,您可以使用幾個不同的字符串來存儲文件版本。
對於只讀資產,我嘗試使用文件時間戳( f.lastModified()
/ f.setSetModified(timestamp)
),但它不起作用,因為f.setSetModified(timestamp)
在Android上不起作用。 至少,在我使用的2.3.4上。
我創建了一個構建任務,它保存所有資產文件的最后修改日期,並將其保存到資產目錄中的新文件lastModified.txt
。 只需將它放在build.gradle
的底部build.gradle
。 仔細檢查資產目錄的路徑。
task saveAllAssetDate {
def assetDirectory = "src/main/assets";
def text = ""
fileTree(assetDirectory).visit { FileVisitDetails details ->
def name = details.file.path;
name = name.substring(name.indexOf("assets"));
text += details.getLastModified() + " " + name + "\n"
}
file(assetDirectory + "/lastModified.txt").text = "" + text
}
build.dependsOn saveAllAssetDate
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.