rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

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]);
}
}