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

开发者社区> 欧阳鹏> 正文

我的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

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


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android系统目录介绍
src目录:完成对java代码的编写 assets目录: 资源目录 res目录: 图片,布局文件和字符串,菜单等文件 bin目录:输出文件夹 如生成的apk安装文件 project.properties 工程属性文件配置 gen目录:系统自动生成的源代码目录 R.java文件时系统自动生成的。
558 0
PageAdmin Cms建站系统如何修改后台登录目录
pageadmin修改后台登录目录的解决办法
281 0
Android存储访问及目录
原文:Android存储访问及目录   Android存储访问及目录   Android的外部存储   Android支持外部存储(case-insensitive filesystem with immutable POSIX permission classes and modes)。
968 0
【我的Android进阶之旅】Android目录过长造成错误:Failed to crunch file abc_textfield_search_activated_mtrl_alpha.9.png
一、编译异常描述 一大早来开发一个新的需求,拉取了一个新的分支,然后导入Android Studio之后,编译就报错了,报错如下所示: 错误具体日志如下所示: Information:Gradle tasks [:app:assembleDebug]...
1449 0
C# 中使用 ThoughtWorks.QRCode.dll 生成指定尺寸和边框宽度的二维码
本文介绍在 C# 中使用 ThoughtWorks.QRCode.dll 生成指定尺寸和边框宽度的二维码。网上文章大多只是简单介绍内置参数的设置,根据我的使用目的,增加了自定义目标二维码图片尺寸和白边边框。
1231 0
正则匹配指定字符之间的内容,并替换(多个匹配替换)
var str="是吗@Test1:我觉得你说的很对@Test:学无止境"; var r=str.match(/@.*?:/ig); for (var index = 0; index < r.
1697 0
+关注
欧阳鹏
一个人,如果你不逼自己一把,你根本不知道自己有多优秀! Talk is cheap, show me the code.
473
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载