首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用关键字搜索sd卡中的文件?

如何使用关键字搜索sd卡中的文件?
EN

Stack Overflow用户
提问于 2014-04-04 06:05:59
回答 3查看 126关注 0票数 0

我正在制作一个应用程序,它用文件名创建excel表中的数据备份,后面跟着当前日期,如"myfile_01-01-2014“和"myfile_01-15-2014”等等.您可以看到日期是可变的。我想搜索关键字"myfile_“,这样我就可以根据创建的日期获得文件列表。我想使用最新的文件进行还原。

代码语言:javascript
复制
(Is it possieble)? "How" : "tell me any other way to do this";

谢谢..。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-04 06:18:28

若要使用字符串关键字搜索文件,请使用以下函数,

代码语言:javascript
复制
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;
}

有关更多筛选选项,请使用字符串操作(如startsWithendWith等)更改下面的行。

代码语言:javascript
复制
 return filename.contains(searchKeyWord);
票数 4
EN

Stack Overflow用户

发布于 2014-04-04 06:17:26

您可以使用递归搜索。在要开始搜索文件的目录路径(例如"/mnt/sdcard")中使用此函数。

代码语言:javascript
复制
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());
            }

        }
    }
}
}
票数 1
EN

Stack Overflow用户

发布于 2014-04-04 06:21:53

试着和这个家伙

调用此方法如下

代码语言:javascript
复制
getAllDocument(Environment.getExternalStorageDirectory());

方法是..。

代码语言:javascript
复制
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
                            }
                        }
                    }
                }
            }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22854790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档