android所有资源都有if,Android:获取特定类型的所有文件的列表

这是我的音频文件FileFilter(您可以更改场景的扩展名列表).

package com.designfuture.music.util;

import java.io.File;

import java.io.FileFilter;

import java.io.FilenameFilter;

import java.util.ArrayList;

import com.designfuture.framework.util.LogHelper;

public class AudioFileFilter implements FileFilter {

protected static final String TAG = "AudioFileFilter";

/**

* allows Directories

*/

private final boolean allowDirectories;

public AudioFileFilter( boolean allowDirectories) {

this.allowDirectories = allowDirectories;

}

public AudioFileFilter() {

this(true);

}

@Override

public boolean accept(File f) {

if ( f.isHidden() || !f.canRead() ) {

return false;

}

if ( f.isDirectory() ) {

return checkDirectory( f );

}

return checkFileExtension( f );

}

private boolean checkFileExtension( File f ) {

String ext = getFileExtension(f);

if ( ext == null) return false;

try {

if ( SupportedFileFormat.valueOf(ext.toUpperCase()) != null ) {

return true;

}

} catch(IllegalArgumentException e) {

//Not known enum value

return false;

}

return false;

}

private boolean checkDirectory( File dir ) {

if ( !allowDirectories ) {

return false;

} else {

final ArrayList subDirs = new ArrayList();

int songNumb = dir.listFiles( new FileFilter() {

@Override

public boolean accept(File file) {

if ( file.isFile() ) {

if ( file.getName().equals( ".nomedia" ) )

return false;

return checkFileExtension( file );

} else if ( file.isDirectory() ){

subDirs.add( file );

return false;

} else

return false;

}

} ).length;

if ( songNumb > 0 ) {

LogHelper.i(TAG, "checkDirectory: dir " + dir.toString() + " return true con songNumb -> " + songNumb );

return true;

}

for( File subDir: subDirs ) {

if ( checkDirectory( subDir ) ) {

LogHelper.i(TAG, "checkDirectory [for]: subDir " + subDir.toString() + " return true" );

return true;

}

}

return false;

}

}

private boolean checkFileExtension( String fileName ) {

String ext = getFileExtension(fileName);

if ( ext == null) return false;

try {

if ( SupportedFileFormat.valueOf(ext.toUpperCase()) != null ) {

return true;

}

} catch(IllegalArgumentException e) {

//Not known enum value

return false;

}

return false;

}

public String getFileExtension( File f ) {

return getFileExtension( f.getName() );

}

public String getFileExtension( String fileName ) {

int i = fileName.lastIndexOf('.');

if (i > 0) {

return fileName.substring(i+1);

} else

return null;

}

/**

* Files formats currently supported by Library

*/

public enum SupportedFileFormat

{

_3GP("3gp"),

MP4("mp4"),

M4A("m4a"),

AAC("aac"),

TS("ts"),

FLAC("flac"),

MP3("mp3"),

MID("mid"),

XMF("xmf"),

MXMF("mxmf"),

RTTTL("rtttl"),

RTX("rtx"),

OTA("ota"),

IMY("imy"),

OGG("ogg"),

MKV("mkv"),

WAV("wav");

private String filesuffix;

SupportedFileFormat( String filesuffix ) {

this.filesuffix = filesuffix;

}

public String getFilesuffix() {

return filesuffix;

}

}

}

您必须使用FileFilter以这种方式从dir获取已过滤的文件列表和目录:

File[] files = dir.listFiles(new AudioFileFilter());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值