Ich möchte prüfen, ob eine Datei existiert oder nicht im Ordner/assets /. Wie könnte ich es tun? Bitte helfen Sie.Wie überprüft man Android Asset-Ressourcen?
Antwort
Sie haben eine eigene Kontrollen durchzuführen. Wie ich weiß, gibt es für diesen Job keine Methode.
können Sie verwenden Resources.openRawResourceFd (int RESID)
http://developer.android.com/reference/android/content/res/Resources.html#openRawResourceFd%28int%29
Ich habe eine Hilfsmethode zu einer meiner Anwendungsklassen hinzugefügt. Ich nehme das an;
- Die Liste der Assets ändert sich nicht, während die App ausgeführt wird.
- die
List<String>
ist kein Speicher Schwein (nur 78 Assets in meiner App). - checking exists() auf der Liste ist schneller als der Versuch, eine Datei zu öffnen und eine Ausnahme zu behandeln (ich habe dies eigentlich nicht profiliert).
AssetManager am; List<String> mapList; /** * Checks if an asset exists. * * @param assetName * @return boolean - true if there is an asset with that name. */ public boolean checkIfInAssets(String assetName) { if (mapList == null) { am = getAssets(); try { mapList = Arrays.asList(am.list("")); } catch (IOException e) { } } return mapList.contains(assetName); }
'List.contains()' gibt bereits boolean zurück, keine Notwendigkeit für den ternären Ausdruck am Ende der Funktion. –
Sie könnten auch nur versuchen, den Stream zu öffnen, wenn es die Datei nicht nicht da ist, und wenn es nicht die Datei nicht da sein sollte:
/**
* Check if an asset exists. This will fail if the asset has a size < 1 byte.
* @param context
* @param path
* @return TRUE if the asset exists and FALSE otherwise
*/
public static boolean assetExists(Context context, String path) {
boolean bAssetOk = false;
try {
InputStream stream = context.getAssets().open(ASSET_BASE_PATH + path);
stream.close();
bAssetOk = true;
} catch (FileNotFoundException e) {
Log.w("IOUtilities", "assetExists failed: "+e.toString());
} catch (IOException e) {
Log.w("IOUtilities", "assetExists failed: "+e.toString());
}
return bAssetOk;
}
Diese Lösung viel schneller, dann den gesamten Ordner des Assets als Liste abrufen und das Containment überprüfen. (Ich habe ~ 50ms vs ~ 800ms auf meinem Gerät gemessen) – azendh
- 1. Wie überprüft man Android Os Version?
- 2. wie man Funktionswert überprüft?
- 3. Wie überprüft man, ob Hintergrunddaten auf dem Android aktiviert sind?
- 4. Wie überprüft man aktuelle laufende Anwendungen in Android?
- 5. Wie überprüft man Einträge in der Listenansicht in Android?
- 6. Wie überprüft man das echte Internet in Android verbunden?
- 7. Android: Wie überprüft man, ob der Server verfügbar ist?
- 8. Youtube auf Android - wie überprüft man, welches Protokoll es verwendet?
- 9. Android - Wie überprüft man, ob das Abonnement erneuert wird?
- 10. Android: Wie überprüft man, ob die Anwendung im Hintergrund läuft
- 11. Wie überprüft man eine ordnungsgemäße Datei im Android-Handy Speicher?
- 12. Android: Wie überprüft man, ob eine Aktivität ein Optionsmenü hat?
- 13. Wie überprüft man, welche Schaltfläche mit Android angeklickt wird?
- 14. Wie überprüft man, ob ein Android-Thread läuft
- 15. Android: Wie überprüft man, ob die Datei ein Bild ist?
- 16. Wie überprüft man die Lese-/Schreibgeschwindigkeit von Android-Speicher?
- 17. Wie überprüft man den Migrationsstatus?
- 18. Wie überprüft man in C#
- 19. Wie überprüft man den Namenstatus?
- 20. Wie überprüft man eine Bibliothek?
- 21. Javascript: Wie man Zeichenkettentyp überprüft?
- 22. Wie überprüft man, ob localhost
- 23. Wie überprüft man SAML-Zertifikate?
- 24. Wie überprüft man, ob eine JCheckBox überprüft wird?
- 25. Android - Wie kann die Aktivität überprüft werden?
- 26. Wie überprüft man die Team City Version
- 27. Wie überprüft man die Tiefe eines Objekts?
- 28. Wie überprüft man Integerüberlauf in C?
- 29. Wie überprüft man, ob "Radiobutton" aktiviert ist?
Ich denke auch so. Vielen Dank. – Mudassir
Verständlich, dass es dafür vielleicht keine Methode gibt, aber wenn Sie keine Alternative zur Verfügung stellen können, dann sollte dies keine Antwort sein. – Gowiem