如何检查android中的assets文件夹中是否存在文件?
我正在使用Android Studio,似乎我没有资源文件夹。所以我创建了一个。
我正在使用此代码加载我的字体:
File pdfFile = null;
try {
pdfFile = new File(new URI(("file:///android_assets/tahoma.ttf")));
if (pdfFile.exists())
Toast.makeText(MainActivity.this,"Exist",Toast.LENGTH_LONG).show();
else
Toast.makeText(MainActivity.this,"No Exist",Toast.LENGTH_LONG).show();
} catch (URISyntaxException e) {
e.printStackTrace();
}
Android Studio 0.5.2中项目的结构:
root-module
|--.idea
|--app
|----build
|----src
|------main
|--------assets
|----------tahoma.ttf
|--------java
|----------source code here
|--------res
|------AndroidManifest.xml
|----build.gradle
buidl.gradle文件:
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion '19.1.0'
sourceSets {
main {
assets.srcDirs = ['assets']
}
}
defaultConfig {
minSdkVersion 11
targetSdkVersion 17
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('libs/android-support-v4.jar')
}
}
答案 0 :(得分:3)
您可以使用AssetManager Api,例如:
AssetManager am = getAssets();
List<String> mapList = Arrays.asList(am.list(""));
答案 1 :(得分:2)
您应该使用以下代码检查文件是否存在:
AssetManager assetManager = getResources().getAssets();
try {
InputStream inputStream =assetManager.open(PATH_TO_YOUR_FILE);
} catch (IOException ex) {
ex.printStackTrace();
} finally {
inputStream.close()
}
答案 2 :(得分:0)
AssetManager am = getAssets();
try {
List<String> mapList = Arrays.asList(am.list("path/in/assets/folder"));
if (mapList.contains("file_to_check")) {
Log.e("ERROR", "exists");
} else {
Log.e("ERROR", "not exists");
}
} catch ( IOException ex){
ex.printStackTrace();
}