我有一个类和它在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类的代码。 我应该在返回文件代码列表末尾之前添加另一个条件吗? 或者我应该早先筑巢另一个条件?
我可以在这里使用任何方法吗? 不幸的是,方法结束对我不起作用。
答案 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;目录中的文件。它使用正则表达式来过滤目录的文件列表。