2019年5月26日日曜日

android開発  端末の外部ストレージ内のファイルに対しファイル名部分一致検索

2019 May 26.




package YOUR.PACKAGE.APPLICATION;

/*
 * Re-use of https://akira-watson.com/android/file_search.html
 */

import android.os.Environment;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class SearchExternalStorageFile {

    // 外部ストレージ内のfileStrにマッチするファイルを検索
    public String[] searchFiles( String fileStr ){

        // マッチしたファイルの絶対パスを格納する
        List listMatchedFiles = new ArrayList<>();

        // String 型の ArrayList を生成
        List listDirectory = new ArrayList<>();

        // 外部ストレージのパスを取得する、パスは機種によって異なる
        File file = Environment.getExternalStorageDirectory();
        String storagePath = file.getPath();

        listDirectory.add(storagePath);

        int m = 0;
        int n = 0;
        String[] fileNames;
        String imgPath = null, fName;

        while(listDirectory.size() > m){

            File directory = new File(listDirectory.get(m));
            fileNames = directory.list();

            n = 0;
            while(fileNames.length > n){

                File subFile;
                subFile = new File(directory.getPath() + "/" + fileNames[n]);

                if (subFile.isDirectory()) {
                    listDirectory.add(directory.getPath() + "/" + fileNames[n]);

                } else {
                    if (fileNames[n].contains(fileStr)) {
                        listMatchedFiles.add(directory.getPath() + "/" + fileNames[n]);
                    }
                }
                n++;
            }
            m++;
        }
        int listSize = listMatchedFiles.size();
        return listMatchedFiles.toArray(new String[listSize]);
    }
}

0 件のコメント:

コメントを投稿