我的Android進階之旅——>Android使用正則表達式匹配掃描指定目錄下的所有媒體文件(音樂、圖像、視頻文件)

今天使用正則表達式匹配指定目錄下的所有媒體文件,下面將這份代碼簡化瞭,可以收藏下來,當作工具類。

[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("px") ||   

                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

當前路徑下放瞭一些測試文件,如下圖所示:

 

[java]  

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);  

        }  

    }  

}  

 

打印的結果如下所示:

[html]  

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  

發佈留言