文件扩展名过滤器

时间:2015-11-04 13:05:45

标签: android

我有一个类和它在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类的代码。 我应该在返回文件代码列表末尾之前添加另一个条件吗? 或者我应该早先筑巢另一个条件?

我可以在这里使用任何方法吗? 不幸的是,方法结束对我不起作用。

1 个答案:

答案 0 :(得分: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;
}

此方法返回所有&#39; * .txt&#39;目录中的文件。它使用正则表达式来过滤目录的文件列表。