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