java取文件类型_Java获取文件的类型

packagecom.wzwahl36.up.file;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.InputStream;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importjava.util.Map.Entry;/*** 文件操作的一个类,包括文件的类型获取,文件、文件夹操作等

*

*@authorXewee.Zhiwei.Wang

*@version2011-9-18 下午12:34:26*/

public classFileUtils {public final static Map FILE_TYPE_MAP = new HashMap();static{

getAllFileType();//初始化文件类型信息

}/*** 将常见文件类型放入到map中

*

*@authorXewee.Zhiwei.Wang

*@version2011-9-18 下午12:35:22*/

private static voidgetAllFileType() {

FILE_TYPE_MAP.put("jpg", "FFD8FF"); //JPEG (jpg)

FILE_TYPE_MAP.put("png", "89504E47"); //PNG (png)

FILE_TYPE_MAP.put("gif", "47494638"); //GIF (gif)

FILE_TYPE_MAP.put("tif", "49492A00"); //TIFF (tif)

FILE_TYPE_MAP.put("bmp", "424D"); //Windows Bitmap (bmp)

FILE_TYPE_MAP.put("dwg", "41433130"); //CAD (dwg)

FILE_TYPE_MAP.put("html", "68746D6C3E"); //HTML (html)

FILE_TYPE_MAP.put("rtf", "7B5C727466"); //Rich Text Format (rtf)

FILE_TYPE_MAP.put("xml", "3C3F786D6C");

FILE_TYPE_MAP.put("zip", "504B0304");

FILE_TYPE_MAP.put("rar", "52617221");

FILE_TYPE_MAP.put("psd", "38425053"); //Photoshop (psd)

FILE_TYPE_MAP.put("eml", "44656C69766572792D646174653A"); //Email

FILE_TYPE_MAP.put("dbx", "CFAD12FEC5FD746F"); //Outlook Express (dbx)

FILE_TYPE_MAP.put("pst", "2142444E"); //Outlook (pst)

FILE_TYPE_MAP.put("xls", "D0CF11E0"); //MS Word

FILE_TYPE_MAP.put("doc", "D0CF11E0"); //MS Excel 注意:word 和 excel的文件头一样

FILE_TYPE_MAP.put("mdb", "5374616E64617264204A"); //MS Access (mdb)

FILE_TYPE_MAP.put("wpd", "FF575043"); //WordPerfect (wpd)

FILE_TYPE_MAP.put("eps", "252150532D41646F6265");

FILE_TYPE_MAP.put("ps", "252150532D41646F6265");

FILE_TYPE_MAP.put("pdf", "255044462D312E"); //Adobe Acrobat (pdf)

FILE_TYPE_MAP.put("qdf", "AC9EBD8F"); //Quicken (qdf)

FILE_TYPE_MAP.put("pwl", "E3828596"); //Windows Password (pwl)

FILE_TYPE_MAP.put("wav", "57415645"); //Wave (wav)

FILE_TYPE_MAP.put("avi", "41564920");

FILE_TYPE_MAP.put("ram", "2E7261FD"); //Real Audio (ram)

FILE_TYPE_MAP.put("rm", "2E524D46"); //Real Media (rm)

FILE_TYPE_MAP.put("mpg", "000001BA"); //

FILE_TYPE_MAP.put("mov", "6D6F6F76"); //Quicktime (mov)

FILE_TYPE_MAP.put("asf", "3026B2758E66CF11"); //Windows Media (asf)

FILE_TYPE_MAP.put("mid", "4D546864"); //MIDI (mid)

}///**//* 获取图片文件实际类型,若不是图片则返回null]//*//* @author Xewee.Zhiwei.Wang//* @version 2011-9-18 下午12:35:59//* @param f//* @return//*///public final static String getImageFileType(File f) {//if (isImage(f)) {//try {//ImageInputStream iis = ImageIO.createImageInputStream(f);//Iterator iter = ImageIO.getImageReaders(iis);//if (!iter.hasNext()) {//return null;//}//ImageReader reader = iter.next();//iis.close();//return reader.getFormatName();//} catch (IOException e) {//return null;//} catch (Exception e) {//return null;//}//}//return null;//}

/*** 获取文件类型,包括图片,若格式不是已配置的,则返回null

*

*@authorXewee.Zhiwei.Wang

*@version2011-9-18 下午12:36:32

*@paramfile

*@return

*/

public staticString getFileTypeByFile(File file) {

String filetype= null;byte[] b = new byte[50];try{

InputStream is= newFileInputStream(file);

is.read(b);

filetype=getFileTypeByStream(b);

is.close();

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}returnfiletype;

}/*** 通过字节流获得文件类型

*

*@authorXewee.Zhiwei.Wang

*@version2011-9-18 下午12:37:03

*@paramb

*@return

*/

public static String getFileTypeByStream(byte[] b) {

String filetypeHex=String.valueOf(getFileHexString(b));

Iterator> entryiterator =FILE_TYPE_MAP

.entrySet().iterator();while(entryiterator.hasNext()) {

Entry entry =entryiterator.next();

String fileTypeHexValue=entry.getValue();if(filetypeHex.toUpperCase().startsWith(fileTypeHexValue)) {returnentry.getKey();

}

}return null;

}///**//* 判断文件是不是图片//*//* @author Xewee.Zhiwei.Wang//* @version 2011-9-18 下午12:37:54//* @param file//* @return//*///public static final boolean isImage(File file) {//boolean flag = false;//try {//BufferedImage bufreader = ImageIO.read(file);//int width = bufreader.getWidth();//int height = bufreader.getHeight();//if (width == 0 || height == 0) {//flag = false;//}//else {//flag = true;//}//} catch (IOException e) {//flag = false;//} catch (Exception e) {//flag = false;//}//return flag;//}

/*** 获得文件的16进制数据

*

*@authorXewee.Zhiwei.Wang

*@version2011-9-18 下午12:38:26

*@paramb

*@return

*/

public static String getFileHexString(byte[] b) {

StringBuilder stringBuilder= newStringBuilder();if (b == null || b.length <= 0) {return null;

}for (int i = 0; i < b.length; i++) {int v = b[i] & 0xFF;

String hv=Integer.toHexString(v);if (hv.length() < 2) {

stringBuilder.append(0);

}

stringBuilder.append(hv);

}returnstringBuilder.toString();

}/*** 删除path(该path可能是文件也可能是文件夹)

*

*@authorXewee.Zhiwei.Wang

*@version2011-9-18 下午12:49:15

*@paramfile 要删除的文件或者目录

*@paramincludeSubFile 如果被删出的是目录,是否循环删除该目录中的子目录

*@return操作是否成功*/

public final boolean deleteFile(File file, booleanincludeSubFile) {if (!file.exists()) {return false;

}if(file.isFile()) {

System.out.println("del file:" +file.toString());returnfile.delete();

}else if(file.isDirectory()) {

File[] fileList=file.listFiles();if(includeSubFile) {for (int i = 0; i < fileList.length; i++) {

deleteFile(fileList[i], includeSubFile);

}

}else{for (int i = 0; i < fileList.length; i++) {if(fileList[i].isFile()) {

deleteFile(fileList[i], includeSubFile);

}

}

}

}return true;

}/*** 删除path(该path可能是文件也可能是文件夹)

*

*@authorXewee.Zhiwei.Wang

*@version2011-9-18 下午12:49:15

*@parampath 要删除的文件或者目录

*@paramincludeSubFile 如果被删出的是目录,是否循环删除该目录中的子目录

*@return操作是否成功*/

public final boolean deleteFile(String path, booleanincludeSubFile) {return deleteFile(newFile(path), includeSubFile);

}/*** 赋值文件scrFile到目地目录destFolder

*@authorXewee.Zhiwei.Wang

*@version2011-9-18 下午12:48:34

*

*@paramscrFile 源文件,可能是文件,可能是目录

*@paramdestFolder 目地文件,只能是目录

*@paramincludeSubFile 如果源文件是目录,是否循环复制源文件的子目录

*@return操作是否成功

*@return

*/

public final boolean copyFile(File scrFile, File destFolder, booleanincludeSubFile) {//未实现

return true;

}/*** 赋值文件scrFile到目地目录destFolder

*@authorXewee.Zhiwei.Wang

*@version2011-9-18 下午12:48:34

*

*@paramscrFile 源文件,可能是文件,可能是目录

*@paramdestFolder 目地文件,只能是目录

*@paramincludeSubFile 如果源文件是目录,是否循环复制源文件的子目录

*@return操作是否成功

*@return

*/

public final boolean copyFile(String scrFile, String destFolder, booleanincludeSubFile) {//未实现

return copyFile(new File(scrFile), newFile(destFolder), includeSubFile);

}/*** 创建文件或者目录

*@authorXewee.Zhiwei.Wang

*@version2011-9-18 下午12:48:15

*@paramfile

*@return

*/

public final booleancreateFile(File file) {try{if(file.isDirectory()) {returnfile.mkdirs();

}else{returnfile.createNewFile();

}

}catch(IOException e) {return false;

}

}/*** 创建文件或者目录

*

*@authorXewee.Zhiwei.Wang

*@version2011-9-18 下午12:48:05

*@paramfile

*@return

*/

public final booleancreateFile(String file) {return createFile(newFile(file));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值