文件管理之文件后缀名识别

        文件有很多种类型,有音乐文件、视频文件、图片文件、文本文件等,不同类型的文件在android中的打开方式是不一样的,也就是需要不同的软件区打开,那么,我们通过String fileName = file.getName;如何判断我们所要打开的文件时什么类型的文件进而采取不同的措施呢?

        不同的文件后缀名并不是唯一的,比如mp3、wmv文件都是音频文件,mp4、avi、rmvb文件都是视频文件,其实要判断文件是什么类型的文件一个函数就可以了,fileName.endsWith(xxx);将后缀名传进去就可以判断了,这样的话,我们可以在代码中写多个String[ ],然后遍历,一个个匹配,当然了,我们可以将这些文件格式放在资源文件中,这样代码就显得简洁多了。

★资源文件的位置


★xml文件的代码

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- 图片的后缀名字 -->
    <array name="fileEndingImage">
        <item>.png</item>
        <item>.gif</item>
        <item>.jpg</item>
        <item>.jpeg</item>
        <item>.bmp</item>
    </array>
    
    <!-- 音乐的后缀名字 -->
    <array name="fileEndingAudio">
        <item>.mp3</item>
        <item>.wav</item>
        <item>.ogg</item>
        <item>.midi</item>
        <item>.wma</item>
    </array>
 
    <!-- 压缩包的后缀名字 -->
    <array name="fileEndingPackage">
        <item>.jar</item>
        <item>.zip</item>
        <item>.rar</item>
        <item>.gz</item>
    </array>
    
    <!-- 网页文件的后缀名字 -->
    <array name="fileEndingWebText">
        <item>.htm</item>
   		<item>.html</item>
   		<item>.php</item>
    </array>
    
    <!-- 视频文件的后缀名字 -->
    <array name="fileEndingVideo">
        <item>.mp4</item>
        <item>.rmvb</item>
        <item>.rm</item>
        <item>.mpg</item>
        <item>.avi</item>
        <item>.mpeg</item>
    </array>
</resources>
 


★下面是匹配代码

◇判断类型方法

/**
     * 通过文件名判断是什么类型的文件
     * fileEndings是某一类型的文件后缀名集合
     */
    public boolean checkFileType(String fileName, String[] extendNames){
    	//遍历后缀名称集合
    	for(String end: extendNames){
    		//判断后缀名称是否存在数组中
    		if(fileName.endsWith(end))
    			return true;
    	}
    	//如果后缀名称不存在数组中,返回false
    	return false;
    }


◇调用代码

//取得文件名
    	String fileName = file.getName();
    		
    	//判断是一个文件夹还是一个文件
    	if(file.isDirectory()){
    		//如果是一个文件夹,则设置图片为文件夹图片
    		currentIcon = getResources().getDrawable(R.drawable.folder);
    	}
    	else {
    		//判断文件是否为图片文件
	    	if(checkFileType(fileName, getResources().getStringArray(R.array.fileEndingImage))){
	    		//设置音乐的图标
	    		currentIcon = getResources().getDrawable(R.drawable.image);
	    	}
	    	//判断文件是否为网页文件
	    	else if(checkFileType(fileName, getResources().getStringArray(R.array.fileEndingWebText))){
	    		//设置音乐的图标
	    		currentIcon = getResources().getDrawable(R.drawable.webtext);
	    	}
	    	//判断文件是否为压缩包文件
	    	else if(checkFileType(fileName, getResources().getStringArray(R.array.fileEndingPackage))){
	    		//设置音乐的图标
	    		currentIcon = getResources().getDrawable(R.drawable.packed);
	    	}
	    	//判断文件是否为音乐文件
	    	else if(checkFileType(fileName, getResources().getStringArray(R.array.fileEndingAudio))){
	    		//设置音乐的图标
	    		currentIcon = getResources().getDrawable(R.drawable.audio);
	    	}
	    	//判断文件是否为视频文件
	    	else if(checkFileType(fileName, getResources().getStringArray(R.array.fileEndingVideo))){
	    		//设置音乐的图标
	    		currentIcon = getResources().getDrawable(R.drawable.video);
	    	}
	    	//如果为其它文件
	    	else {
	    		//默认图标
	    		currentIcon = getResources().getDrawable(R.drawable.text);
	    	}
    	}


原文地址:https://www.cnblogs.com/pangblog/p/3325029.html