2015-11-04 2 views
-1

У меня есть класс и пример его использования внутри Activity. Код, как показано ниже:Фильтр расширения файлов

FileExplorer.java

public class FileExplorer { 
public static final String TAG = FileExplorer.class.getSimpleName(); 

public List<String> getAllFilesOfDir(File directory) { 
    List<String> allFiles = new LinkedList<>(); 
    Log.d(TAG, "Directory: " + directory.getAbsolutePath() + "\n"); 

    final File[] files = directory.listFiles(); 

    if (files != null) { 
     for (File file : files) { 
      if (file != null) { 
       if (file.isDirectory()) { // to folder 
        allFiles.addAll(getAllFilesOfDir(file)); 

       } else { // to plik 
        Log.d(TAG, "File: " + file.getAbsolutePath() + "\n"); 
        allFiles.add(file.getAbsolutePath()); 
       } 
      } 
     } 
    } 


    return allFiles; 
} } 

FileExplorerActivity.java

public class FileExplorerActivity extends AppCompatActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_file_explorer); 



    final String state = Environment.getExternalStorageState(); 
    FileExplorer explorer = new FileExplorer(); 
    List<String> allFiles = null; 
    Log.e("QWE", "qweqwE"); 
    if (Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { // mozemy czytac External storage... 
     allFiles = explorer.getAllFilesOfDir(Environment.getExternalStorageDirectory()); 
    } else { 
     Log.e("ASD", "Nothing"); 
    } 
    if (allFiles != null) { 
     Log.d("BENG", "File list with size of: " + allFiles.size()); 
     for (String file : allFiles) { 
      Log.d("FILE", file); 
     } 
    } 

Я полагаю, теперь мне нужно расширить код FileExplorer класса. Должен ли я добавить другое условие перед возвратом в конец списка кодов файлов? Или мне нужно установить еще одно условие?

Есть ли какой-либо метод, который я могу использовать здесь? К сожалению, метод endWith не работает для меня.

ответ

0

, если вы хотите, чтобы отфильтровать список файлов, вы можете использовать что-то вроде этого:

ArrayList<String> getMessageFiles(String aDir) 
{ 
    ArrayList<String> res=new ArrayList<String>(); 
    File dir=new File(aDir); 
    String[] files=dir.list(); 
    if(files!=null) 
     for(String afile:files) 
     { 
      File file=new File(dir,afile); 
      if(!file.isFile()) continue; 
      if(!afile.matches(".*\\.txt$")) continue; 

      res.add(file.getAbsolutePath()); 
     } 
    return res; 
} 

Этот метод возвращает все «* .txt» файлы из каталога. Он использует регулярные выражения для фильтрации списка файлов каталога.

Смежные вопросы