我的Android进阶之旅------>Android使用正则表达式匹配扫描指定目录下的所有媒体文件(音乐、图像、视频文件)

我的Android进阶之旅------>Android使用正则表达式匹配扫描指定目录下的所有媒体文件(音乐、图像、视频文件)

今天使用正则表达式匹配指定目录下的所有媒体文件,下面将这份代码简化了,可以收藏下来,当作工具类。

package match;

import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern; public class Utils {
/**
* 遍历指定文件夹下的资源文件
* @param folder 文件
*/
public static void simpleScanning(File folder) {
//指定正则表达式
Pattern mPattern = Pattern.compile("([^\\.]*)\\.([^\\.]*)");
// 当前目录下的所有文件
final String[] filenames = folder.list();
// 当前目录的名称
//final String folderName = folder.getName();
// 当前目录的绝对路径
//final String folderPath = folder.getAbsolutePath();
if (filenames != null) {
// 遍历当前目录下的所有文件
for (String name : filenames) {
File file = new File(folder, name);
// 如果是文件夹则继续递归当前方法
if (file.isDirectory()) {
simpleScanning(file);
}
// 如果是文件则对文件进行相关操作
else {
Matcher matcher = mPattern.matcher(name);
if (matcher.matches()) {
// 文件名称
String fileName = matcher.group(1);
// 文件后缀
String fileExtension = matcher.group(2);
// 文件路径
String filePath = file.getAbsolutePath(); if (Utils.isMusic(fileExtension)) {
// 初始化音乐文件......................
System.out.println("This file is Music File,fileName="+fileName+"."
+fileExtension+",filePath="+filePath);
} if (Utils.isPhoto(fileExtension)) {
// 初始化图片文件......................
System.out.println("This file is Photo File,fileName="+fileName+"."
+fileExtension+",filePath="+filePath);
} if (Utils.isVideo(fileExtension)) {
// 初始化视频文件......................
System.out.println("This file is Video File,fileName="+fileName+"."
+fileExtension+",filePath="+filePath);
}
}
}
}
}
}
/**
* 判断是否是音乐文件
* @param extension 后缀名
* @return
*/
public static boolean isMusic(String extension) {
if (extension == null)
return false; final String ext = extension.toLowerCase();
if (ext.equals("mp3") || ext.equals("m4a") || ext.equals("wav") || ext.equals("amr") || ext.equals("awb") ||
ext.equals("aac") || ext.equals("flac") || ext.equals("mid") || ext.equals("midi") ||
ext.equals("xmf") || ext.equals("rtttl") || ext.equals("rtx") || ext.equals("ota") ||
ext.equals("wma") ||ext.equals("ra") || ext.equals("mka") || ext.equals("m3u") || ext.equals("pls")) {
return true;
}
return false;
}
/**
* 判断是否是图像文件
* @param extension 后缀名
* @return
*/
public static boolean isPhoto(String extension) {
if (extension == null)
return false; final String ext = extension.toLowerCase();
if (ext.endsWith("jpg") || ext.endsWith("jpeg") || ext.endsWith("gif") || ext.endsWith("png") ||
ext.endsWith("bmp") || ext.endsWith("wbmp")) {
return true;
}
return false;
}
/**
* 判断是否是视频文件
* @param extension 后缀名
* @return
*/
public static boolean isVideo(String extension) {
if (extension == null)
return false; final String ext = extension.toLowerCase();
if (ext.endsWith("mpeg") || ext.endsWith("mp4") || ext.endsWith("mov") || ext.endsWith("m4v") ||
ext.endsWith("3gp") || ext.endsWith("3gpp") || ext.endsWith("3g2") ||
ext.endsWith("3gpp2") || ext.endsWith("avi") || ext.endsWith("divx") ||
ext.endsWith("wmv") || ext.endsWith("asf") || ext.endsWith("flv") ||
ext.endsWith("mkv") || ext.endsWith("mpg") || ext.endsWith("rmvb") ||
ext.endsWith("rm") || ext.endsWith("vob") || ext.endsWith("f4v")) {
return true;
}
return false;
}
}

下面使用该工具类进行测试指定的路径:/home/ouyangpeng/justForTest

当前路径下放了一些测试文件,如下图所示:

我的Android进阶之旅------>Android使用正则表达式匹配扫描指定目录下的所有媒体文件(音乐、图像、视频文件)

package match;

import java.io.File;

public class Test{
public static void main(String[] args) {
String path="/home/ouyangpeng/justForTest";
File file = new File(path);
if (file==null) {
System.out.println("file does not exist");
}else{
Utils.simpleScanning(file);
}
}
}

打印的结果如下所示:

This file is Video File,fileName=Love Is Lost (Remix Version) 高清(360P).mp4,filePath=/home/ouyangpeng/justForTest/Love Is Lost (Remix Version) 高清(360P).mp4
This file is Video File,fileName=URATA NAOYA (AAA) _LIVE 高清(360P).mp4,filePath=/home/ouyangpeng/justForTest/URATA NAOYA (AAA) _LIVE 高清(360P).mp4
This file is Music File,fileName=K歌之王.mp3,filePath=/home/ouyangpeng/justForTest/K歌之王.mp3
This file is Photo File,fileName=507e4c75a6e64.jpg,filePath=/home/ouyangpeng/justForTest/507e4c75a6e64.jpg
This file is Video File,fileName=a.mp4,filePath=/home/ouyangpeng/justForTest/a.mp4
This file is Video File,fileName=Do You Feel Me (专辑封面拍摄花絮) 高清(360P).mp4,filePath=/home/ouyangpeng/justForTest/Do You Feel Me (专辑封面拍摄花絮) 高清(360P).mp4

ps:将上面的代码稍作修改,就能使用合适的适配器做一个文件管理器将视频、音乐、图像文件都显示出来。

====================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址:http://blog.csdn.net/ouyang_peng

===================================================================================

上一篇:L - Tic-Tac-Toe FZU - 2283 (思维)


下一篇:Android 正则表达式匹配汉字中文