我正在创建一个应用程序,在excel表格中创建数据备份,文件名后跟当前日期,如" myfile_01-01-2014"和" myfile_01-15-2014"等等...你可以看到日期是可变的。我想搜索关键字" myfile _"这样我就可以根据创建的日期获取文件列表。我想使用最新的文件进行恢复。
(Is it possieble)? "How" : "tell me any other way to do this";
谢谢......
答案 0 :(得分:4)
要使用字符串关键字搜索文件,请使用以下函数
public ArrayList<File> searchFile(File parent,final String searchKeyWord) {
ArrayList<File> result = new ArrayList<File>();
File[] files = parent.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String filename) {
return filename.contains(searchKeyWord);
}
});
for (File file : files) {
result.add(file);
}
return result;
}
如需更多过滤选项,请使用startsWith
endWith
等字符串操作更改以下行。
return filename.contains(searchKeyWord);
答案 1 :(得分:1)
您可以使用递归搜索。将此功能与您要开始搜索文件的目录路径一起使用(例如&#34; / mnt / sdcard&#34;)。
public Vector<String> yourFiles = new Vector<String>();
private void searchInDirectory(String directory)
{
File dir = new File(directory);
if(dir.canRead() && dir.exists() && dir.isDirectory())
{
String []filesInDirectory = dir.list();
if(filesInDirectory != null)
{
for(int i=0; i<filesInDirectory.length; i++)
{
File file = new File(directory+"/"+filesInDirectory[i]);
if(file.isFile() && filesInDirectory[i].startsWith("myfile"))
{
yourFiles.add(directory+"/"+filesInDirectory[i]);
}
else if(file.isDirectory() )
{
searchInDirectory(file.getAbsolutePath());
}
}
}
}
}
答案 2 :(得分:1)
试试这个家伙
将此方法称为
getAllDocument(Environment.getExternalStorageDirectory());
和方法差异是......
public void getAllDocument(File dir) {
File listFile[] = dir.listFiles();
if (listFile != null) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].isDirectory()) {
getAllDocument(listFile[i]);
} else {
listFile[i].getName();
if(!listFile[i].getAbsolutePath().startsWith("myfile_"))
{
//took this file into your wraaper or then just comapre for the newest with your logic
}
}
}
}
}