ArrayListSDカード内の全てのフォルダー内からフォントファイルを取得する方法fontFile = new ArrayList (); String stateSD; // SDカードがマウントされてるかの確認 stateSD = Environment.getExternalStorageState(); if(Environment.MEDIA_MOUNTED.equals(stateSD)) { // フォントファイルが格納されているディレクトリを設定 File file = new File(Environment.getExternalStorageDirectory().getPath() + "/fonts"); // ディレクトリ内のファイルを取得 String fileName[] = file.list(); for(int i = 0; i < fileName.length; i++) { // ファイル名を取得 File selectName = new File(file.getPath() + "/" + fileName[i]); // フォントファイル(ttf,otf)を選別 if(selectName.getName().endsWith("ttf") || selectName.getName().endsWith("otf")){ fontFile.add(file.getPath()+"/"+fileName[i]); } } }
ArrayListこの方法だと、フォルダーに何も入ってない場合selectName.lengthで、例外が発生するかなぁ・・・folderList = new ArrayList (); ArrayList fontFile = new ArrayList (); String stateSD; // SDカードがマウントされてるかの確認 stateSD = Environment.getExternalStorageState(); if(Environment.MEDIA_MOUNTED.equals(stateSD)) { // ルートディレクトリを取得 File file = Environment.getExternalStorageDirectory(); // ルートディレクトリをfolderListに追加 folderList.add(file.getPath()); for(int i = 0; i < folderList.size(); i++) { // フォルダを設定 File subFolder = new File(folderList.get(i)); // フォルダ内のフォルダ・フィル名を取得 String selectName[] = subFolder.list(); for(int j = 0; j < selectName.length; j++) { // フォルダ・ファイルを1つづつ設定 File subFile = new File(subFolder.getPath() + "/" + selectName[j]); // 設定された項目がフォルダか判別 フォルダならfolderListに追加/目的のファイルならファイルリストに追加 if(subFile.isDirectory()) { folderList.add(subFolder.getPath() + "/" + selectName[j]); } else if(subFile.getName().endsWith("ttf") || subFile.getName().endsWith("otf")) { fontFile.add(subFolder.getPath() + "/" + selectName[j]); } } } }
try~catchで、例外処理をした方がよさそう。
0 件のコメント:
コメントを投稿