java上传文件以流方式判断类型
2015-05-05 16:52
501 查看
package com.omg.utils; /** * 文件类型枚取 */ public enum FileType { /** * JEPG. */ JPEG("FFD8FF"), /** * PNG. */ PNG("89504E47"), /** * GIF. */ GIF("47494638"), /** * TIFF. */ TIFF("49492A00"), /** * Windows Bitmap. */ BMP("424D"), /** * CAD. */ DWG("41433130"), /** * Adobe Photoshop. */ PSD("38425053"), /** * Rich Text Format. */ RTF("7B5C727466"), /** * XML. */ XML("3C3F786D6C"), /** * HTML. */ HTML("68746D6C3E"), /** * CSS. */ CSS("48544D4C207B0D0A0942"), /** * JS. */ JS("696B2E71623D696B2E71"), /** * Email [thorough only]. */ EML("44656C69766572792D646174653A"), /** * Outlook Express. */ DBX("CFAD12FEC5FD746F"), /** * Outlook (pst). */ PST("2142444E"), /** * MS Word/Excel. */ XLS_DOC("D0CF11E0"), XLSX_DOCX("504B030414000600080000002100"), /** * Visio */ VSD("d0cf11e0a1b11ae10000"), /** * MS Access. */ MDB("5374616E64617264204A"), /** * WPS文字wps、表格et、演示dps都是一样的 */ WPS("d0cf11e0a1b11ae10000"), /** * torrent */ TORRENT("6431303A637265617465"), /** * WordPerfect. */ WPD("FF575043"), /** * Postscript. */ EPS("252150532D41646F6265"), /** * Adobe Acrobat. */ PDF("255044462D312E"), /** * Quicken. */ QDF("AC9EBD8F"), /** * Windows Password. */ PWL("E3828596"), /** * ZIP Archive. */ ZIP("504B0304"), /** * RAR Archive. */ RAR("52617221"), /** * JSP Archive. */ JSP("3C2540207061676520"), /** * JAVA Archive. */ JAVA("7061636B61676520"), /** * CLASS Archive. */ CLASS("CAFEBABE0000002E00"), /** * JAR Archive. */ JAR("504B03040A000000"), /** * MF Archive. */ MF("4D616E69666573742D56"), /** *EXE Archive. */ EXE("4D5A9000030000000400"), /** *CHM Archive. */ CHM("49545346030000006000"), /* * INI("235468697320636F6E66"), SQL("494E5345525420494E54"), BAT( * "406563686F206f66660D"), GZ("1F8B0800000000000000"), PROPERTIES( * "6C6F67346A2E726F6F74"), MXP( * "04000000010000001300"), */ /** * Wave. */ WAV("57415645"), /** * AVI. */ AVI("41564920"), /** * Real Audio. */ RAM("2E7261FD"), /** * Real Media. */ RM("2E524D46"), /** * MPEG (mpg). */ MPG("000001BA"), /** * Quicktime. */ MOV("6D6F6F76"), /** * Windows Media. */ ASF("3026B2758E66CF11"), /** * MIDI. */ MID("4D546864"), /** * MP4. */ MP4("00000020667479706d70"), /** * MP3. */ MP3("49443303000000002176"), /** * FLV. */ FLV("464C5601050000000900"); private String value = ""; /** * Constructor. * * @param type */ private FileType(String value) { this.value = value; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } }
package com.omg.utils;
import java.io.IOException;
import java.io.InputStream;
/**
* 文件类型判断类
*/
public final class FileTypeJudge {
/**
* Constructor
*/
private FileTypeJudge() {
}
/**
* 将文件头转换成16进制字符串
*
* @param 原生byte
* @return 16进制字符串
*/
private static String bytesToHexString(byte[] src) {
StringBuilder stringBuilder = new StringBuilder();
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
}
/**
* 得到文件头
*
* @param filePath
* 文件路径
* @return 文件头
* @throws IOException
*/
private static String getFileContent(InputStream is) throws IOException {
byte[] b = new byte[28];
InputStream inputStream = null;
try {
is.read(b, 0, 28);
} catch (IOException e) {
e.printStackTrace();
throw e;
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
throw e;
}
}
}
return bytesToHexString(b);
}
/**
* 判断文件类型
*
* @param filePath
* 文件路径
* @return 文件类型
*/
public static FileType getType(InputStream is) throws IOException {
String fileHead = getFileContent(is);
if (fileHead == null || fileHead.length() == 0) {
return null;
}
fileHead = fileHead.toUpperCase();
FileType[] fileTypes = FileType.values();
for (FileType type : fileTypes) {
if (fileHead.startsWith(type.getValue())) {
return type;
}
}
return null;
}
public static Integer isFileType(FileType value) {
Integer type = 7;// 其他
// 图片
FileType[] pics = { FileType.JPEG, FileType.PNG, FileType.GIF, FileType.TIFF, FileType.BMP, FileType.DWG, FileType.PSD };
FileType[] docs = { FileType.RTF, FileType.XML, FileType.HTML, FileType.CSS, FileType.JS, FileType.EML, FileType.DBX, FileType.PST, FileType.XLS_DOC, FileType.XLSX_DOCX, FileType.VSD,
FileType.MDB, FileType.WPS, FileType.WPD, FileType.EPS, FileType.PDF, FileType.QDF, FileType.PWL, FileType.ZIP, FileType.RAR, FileType.JSP, FileType.JAVA, FileType.CLASS,
FileType.JAR, FileType.MF, FileType.EXE, FileType.CHM };
FileType[] videos = { FileType.AVI, FileType.RAM, FileType.RM, FileType.MPG, FileType.MOV, FileType.ASF, FileType.MP4, FileType.FLV, FileType.MID };
FileType[] tottents = { FileType.TORRENT };
FileType[] audios = { FileType.WAV, FileType.MP3 };
FileType[] others = {};
// 图片
for (FileType fileType : pics) {
if (fileType.equals(value)) {
type = 1;
}
}
// 文档
for (FileType fileType : docs) {
if (fileType.equals(value)) {
type = 2;
}
}
// 视频
for (FileType fileType : videos) {
if (fileType.equals(value)) {
type = 3;
}
}
// 种子
for (FileType fileType : tottents) {
if (fileType.equals(value)) {
type = 4;
}
}
// 音乐
for (FileType fileType : audios) {
if (fileType.equals(value)) {
type = 5;
}
}
return type;
}
public static void main(String args[]) throws Exception {
// System.out.println(FileTypeJudge.getType(new FileInputStream("")));
for (FileType type : FileType.values()) {
System.out.print(type + "\t");
}
}
}
原文出自:http://www.cnblogs.com/rainsilence/archive/2012/06/06/2538294.html
相关文章推荐
- java上传文件以流方式判断类型
- java上传文件以流方式判断类型
- 160414、java上传文件以流方式判断类型
- java上传文件以流方式判断类型
- SpringMVC上传文件以流方式判断类型附常用类型
- Java 通过魔数判断上传文件的类型
- java_js判断上传的文件类型.
- SpringMVC上传文件以流方式判断类型附常用类型
- JAVA 文件上传后台判断浏览器的类型以及JDK1.5和1.6处理的不同
- Java 通过魔数判断上传文件的类型
- Java 通过魔数判断上传文件的类型
- 以16进制的方式判断文件上传的类型
- java判断上传文件类型是否为图片
- java判断上传文件类型(笔记)
- SpringBoot文件上传控制及Java 获取和判断文件头信息
- java异步上传文件(方式一)
- 4000 java异步上传文件(方式二)
- Java 使用ftp的方式上传文件到linux,并实现删除,下载
- java 文件上传 之 好几种方式上传。(~ o ~)~zZ
- 判断文件上传时文件的类型