如何查找名称以Android中特定字符串开头的文件夹中的文件

时间:2016-11-03 09:59:45

标签: java android

有人可以帮助我......

我正在创建一个Android应用程序,现在我需要在我的设备的 Download 文件夹中搜索文件,如果我找到名称以data开头的文件,则调用一个函数。< / p>

感谢。

3 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

File dir = Environment
    .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File[] files = dir.listFiles();

for (File file : files) {
    if (file.getName().startsWith("data")) {
        // it's a match, call your function
    }
}

不要忘记向您的清单添加READ_EXTERNAL_STORAGE权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

由于此权限的protectionLeveldangerous,因此在API级别23+上,您需要在运行时请求此权限。查看相应的developer's guide article

答案 1 :(得分:0)

您应该对代码进行以下更改: -

1)将android.permission.WRITE_EXTERNAL_STORAGE添加到manifest.xml文件

2)Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 然后,您可以使用File.list()或File.listFiles()将目录中的所有文件转换为数组。

您可以循环返回的数组,并且可以使用正则表达式搜索文件: -

Pattern pattern = Pattern.compile("^data");

然后写下匹配器声明: -

Matcher matcher = pattern.matcher(file.getName());               
 if(!matcher.find()) {
            // do your method call here                     
 }

希望它对你有所帮助。

答案 2 :(得分:0)

   ArrayList< File > getFileList( File downloadFolder, String preFixFilter )
   {
       ArrayList< File > filteredFileList = new ArrayList< File >();
       for( File file : downloadFolder.listFiles() )
       {
            if( file.getName().toLowerCase().startsWith( preFixFilter.toLowerCase() ) )
            {
                 filteredFileList.add( file );
            }
       }
       return filteredFileList;
   }