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

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

     

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

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

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



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

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


相关文章
|
Python Windows
【Python进阶必备】一文掌握re库:实战正则表达式
【Python进阶必备】一文掌握re库:实战正则表达式
317 0
|
开发工具 Android开发 开发者
Android UI设计: 解释Android的Nine-Patch图像是什么,它用于什么目的?
Android UI设计: 解释Android的Nine-Patch图像是什么,它用于什么目的?
202 4
|
机器学习/深度学习 SQL 关系型数据库
【MySQL进阶之路丨第十一篇】一文带你精通MySQL NULL值处理、正则表达式
【MySQL进阶之路丨第十一篇】一文带你精通MySQL NULL值处理、正则表达式
169 0
|
7天前
|
存储 消息中间件 人工智能
【05】AI辅助编程完整的安卓二次商业实战-消息页面媒体对象(Media Object)布局实战调整-按钮样式调整实践-优雅草伊凡
【05】AI辅助编程完整的安卓二次商业实战-消息页面媒体对象(Media Object)布局实战调整-按钮样式调整实践-优雅草伊凡
32 11
【05】AI辅助编程完整的安卓二次商业实战-消息页面媒体对象(Media Object)布局实战调整-按钮样式调整实践-优雅草伊凡
|
XML 存储 数据库
如何使用Android Studio创建一个基本的音乐播放器应用
如何使用Android Studio创建一个基本的音乐播放器应用
625 0
|
开发工具 Android开发 开发者
Android `.9.png` 图像是用于UI的可拉伸格式,保持元素清晰度和比例
【6月更文挑战第26天】Android `.9.png` 图像是用于UI的可拉伸格式,保持元素清晰度和比例。通过边上的黑线定义拉伸区域,右下角黑点标识内容区域,适应文本或组件大小变化。常用于按钮、背景等,确保跨屏幕尺寸显示质量。Android SDK 提供`draw9patch.bat`工具来创建和编辑。**
356 6
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
|
JavaScript 前端开发 测试技术
JavaScript进阶-正则表达式基础
【6月更文挑战第21天】正则表达式是处理字符串的利器,JavaScript中广泛用于搜索、替换和验证。本文讲解正则基础,如字符匹配、量词和边界匹配,同时也讨论了常见问题和易错点,如大小写忽略、贪婪匹配,提供代码示例和调试建议。通过学习,开发者能更好地理解和运用正则表达式解决文本操作问题。
107 1
|
Android开发
在Android上实现图像颜色过滤与反转
在Android上实现图像颜色过滤与反转
377 0
在Android上实现图像颜色过滤与反转
|
数据安全/隐私保护 Python
Python进阶---正则表达式
Python进阶---正则表达式
83 2

热门文章

最新文章