2019年5月26日日曜日

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

2019 May 26.




  1. package YOUR.PACKAGE.APPLICATION;
  2.  
  3. /*
  4. * Re-use of https://akira-watson.com/android/file_search.html
  5. */
  6.  
  7. import android.os.Environment;
  8.  
  9. import java.io.File;
  10. import java.util.ArrayList;
  11. import java.util.List;
  12.  
  13. public class SearchExternalStorageFile {
  14.  
  15. // 外部ストレージ内のfileStrにマッチするファイルを検索
  16. public String[] searchFiles( String fileStr ){
  17.  
  18. // マッチしたファイルの絶対パスを格納する
  19. List listMatchedFiles = new ArrayList<>();
  20. // String 型の ArrayList を生成
  21. List listDirectory = new ArrayList<>();
  22. // 外部ストレージのパスを取得する、パスは機種によって異なる
  23. File file = Environment.getExternalStorageDirectory();
  24. String storagePath = file.getPath();
  25. listDirectory.add(storagePath);
  26. int m = 0;
  27. int n = 0;
  28. String[] fileNames;
  29. String imgPath = null, fName;
  30. while(listDirectory.size() > m){
  31. File directory = new File(listDirectory.get(m));
  32. fileNames = directory.list();
  33. n = 0;
  34. while(fileNames.length > n){
  35. File subFile;
  36. subFile = new File(directory.getPath() + "/" + fileNames[n]);
  37. if (subFile.isDirectory()) {
  38. listDirectory.add(directory.getPath() + "/" + fileNames[n]);
  39. } else {
  40. if (fileNames[n].contains(fileStr)) {
  41. listMatchedFiles.add(directory.getPath() + "/" + fileNames[n]);
  42. }
  43. }
  44. n++;
  45. }
  46. m++;
  47. }
  48. int listSize = listMatchedFiles.size();
  49. return listMatchedFiles.toArray(new String[listSize]);
  50. }
  51. }

0 件のコメント:

コメントを投稿