Chcę sprawdzić, czy plik istnieje, czy nie, w folderze/assets /. Jak mogłem to zrobić? Proszę pomóż.Jak sprawdzić zasób zasobów Androida?
Odpowiedz
Trzeba wykonać własne kontrole. Jak wiem, nie ma metody tej pracy.
Można użyć Resources.openRawResourceFd (int pozost)
http://developer.android.com/reference/android/content/res/Resources.html#openRawResourceFd%28int%29
Dodałem metodę pomocnika do jednej z moich klas aplikacji. Zakładam to;
- Lista zasobów nie zmienia się podczas działania aplikacji.
List<String>
to nie pamięć (tylko 78 zasobów w mojej aplikacji).- Sprawdzanie istnieje() na liście jest szybsze niż próba otwarcia pliku i obsługi wyjątku (w rzeczywistości nie profilowałem tego).
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()' już zwraca boolean, nie ma potrzeby potrójnego wyrażenia na końcu funkcji. –
Można też po prostu spróbować, aby otworzyć strumień, jeśli nie plik nie istnieje i jeśli nie uda plik powinien być tam:
/**
* 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;
}
To rozwiązanie o wiele szybsze, a następnie pobranie całego folderu zasobów jako listy i sprawdzenie ograniczenia. (Zmierzyłem ~ 50ms vs ~ 800ms na moim urządzeniu) – azendh
- 1. Jak sprawdzić, który zasób losowy jest używany?
- 2. Automatyczne skalowanie zasobów Androida
- 3. Jak sprawdzić, czy plik zasobów istnieje w Javie?
- 4. Jak sprawdzić, czy adres URL zasobu rzeczywiście wskazuje istniejący zasób?
- 5. Android: Jak uzyskać identyfikator zasobu zasobów Androida
- 6. Jak utworzyć zasób PNG?
- 7. Jak chronić zasób kreślarski w aplikacji Android
- 8. Jena - Jak sprawdzić, czy konkretny zasób znajduje się w modelu?
- 9. Jak mogę sprawdzić, czy zasób istnieje w Androidzie
- 10. Konwencja nazewnictwa i sugestie zarządzania "zasób zasobów" (WPF)
- 11. Jak sprawdzić wersję cordova/phonegap na androida?
- 12. jak sprawdzić prawdziwy Internet podłączony do Androida?
- 13. Zasoby androida zasobów zrzutów bez wyjścia
- 14. Unikanie duplikatów zasobów w projekcie androida
- 15. Jak sprawdzić, czy zasób nltk jest już zainstalowany na komputerze, na którym działa mój kod?
- 16. lokalizowanie zasobów surowców w aplikacji na Androida
- 17. Gradle: wyklucz plik z folderu zasobów Androida
- 18. Jakie są ograniczenia dotyczące liczby zasobów Androida?
- 19. Zasób odniesienia w javascript
- 20. Jak odzyskać tablicę 2D z zasobów ciągów xml dla Androida?
- 21. Jak skutecznie uzyskać krótką tablicę z zasobów na Androida?
- 22. Pobierz zasób rozciągliwej od Uri
- 23. Która część Androida jest odpowiedzialna za wybór prawidłowego profilu zasobów?
- 24. Łączenie zasobów zasobów z odziedziczonymi szablonami
- 25. SharedResourceDictionary: edytuj zasób w mieszance
- 26. Gdzie sprawdzić zmianę orientacji w fragmencie androida
- 27. Niesprawny zasób Android nie znaleziono wyjątek
- 28. Jak wyśmiać kątowy zasób $ w testach jaśminowych
- 29. Jak sprawdzić, jakie wymagania sprzętowe ma moja aplikacja na Androida?
- 30. Jak sprawdzić wersję narzędzi programistów Androida z poziomu wiersza poleceń?
Ja też tak uważam. Dzięki. – Mudassir
Zrozumiałe, że nie ma na to metody, ale jeśli nie możesz podać alternatywy, nie powinno to być odpowiedzią. – Gowiem