检查文件存在于android中的assets文件夹中

时间:2014-07-03 09:30:24

标签: android

如何检查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')

    }
}

3 个答案:

答案 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();
}