2013-02-02 2 views

답변

5

는 파일이 아닌 실패하면 당신은 그냥 스트림을 열려고 할 수 그것은이 있어야 파일을 실패하지 않는 경우

/** 
* 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; 
} 
+1

경로가'file : /// android_asset /'로 시작한다면 다음과 같이 다시 작성하십시오 : final String ASSET_PATH = "file : /// android_asset /"; String filePath = path.replaceFirst (ASSET_PATH, ""); InputStream stream = context.getAssets(). open (filePath); – CoolMind

+0

참고 : 주석의 부분은 디렉토리에서 작동하지 않습니다. – kaay

0

[Android Assets]: File or Folder?

How to get all files from assets folder

File f=new File("file:///android_asset/"); 
    File[] files=f.listFiles(); 

파일이 null den을 반환하면 폴더가 비어 있음을 이해합니다.

+0

assets 폴더의 파일을 검사하기 위해 "Arrays.asList (getResources(). getAssets(). list (" ")) contains (filename)"코드를 사용하고 있습니다. 자산 하위 디렉토리의 파일을 확인하려면 어떻게해야합니까? 리스트 ("") 메소드에서 폴더 이름을 지정하는 것과 같은 하드 코딩을하지 않아도됩니다. – Karthick

+0

getResources(). getAssets()를 사용하면 나중에 쉽게 사용할 수 있습니다. 얼마나 많은 폴더 U에 자산 폴더가 있는지 알 수 있습니다. 폴더 길이를 순환 할 수 있습니다. den ur ur 폴더의 파일 수를 확인할 수 있습니다. 재귀 함수를 사용하거나 폴더에 하위 폴더가있는 경우 다시 반복 호출) – duggu

+0

예, 폴더 목록을 가져 오는 중이지만 파일이나 디렉토리로 변환하기가 어려울 수 있습니다. "목록 목록 = Arrays.asList (getResources(). getAssets(). list (" "))". 이 디렉토리를 나열하는 데 사용하고 있습니다. 이것을 어떻게 파일로 변환 할 수 있습니까? – Karthick