有人可以帮助我......
我正在创建一个Android应用程序,现在我需要在我的设备的 Download 文件夹中搜索文件,如果我找到名称以data
开头的文件,则调用一个函数。< / p>
感谢。
答案 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"/>
由于此权限的protectionLevel
为dangerous
,因此在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;
}