public static final HashMap map = new HashMap(); static { map.put("89504E47", "png"); map.put("49492A00", "tif"); map.put("FFD8FF", "jpg"); } public static String getFileType(String filePath) { return (String) map.get(getFileHeader(filePath)); } public static String getFileHeader(String filePath) { FileInputStream is = null; String value = null; try { is = new FileInputStream(filePath); byte[] b = new byte[4]; /* * int read() 从此输入流中读取一个数据字节。 int read(byte[] b) 从此输入流中将最多 b.length * 个字节的数据读入一个 byte 数组中。 int read(byte[] b, int off, int len) * 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。 */ is.read(b, 0, b.length); value = bytesToHexString(b); } catch (Exception e) { } finally { if (null != is) { try { is.close(); } catch (IOException e) { } } } return value; } private static String bytesToHexString(byte[] src) { StringBuilder builder = new StringBuilder(); if (src == null || src.length <= 0) { return null; } String hv; for (int i = 0; i < src.length; i++) { // 以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式,并转换为大写 hv = Integer.toHexString(src[i] & 0xFF).toUpperCase(); if (hv.length() < 2) { builder.append(0); } builder.append(hv); } // System.out.println(builder.toString()+"4"); return builder.toString(); } /** * ############################################################################ */ public static String getImageType(File srcFilePath) { FileInputStream imgFile; byte[] b = new byte[10]; int l = -1; try { imgFile = new FileInputStream(srcFilePath); l = imgFile.read(b); imgFile.close(); } catch (Exception e) { return null; } if (l == 10) { byte b0 = b[0]; byte b1 = b[1]; byte b2 = b[2]; byte b3 = b[3]; byte b6 = b[6]; byte b7 = b[7]; byte b8 = b[8]; byte b9 = b[9]; for (int i = 0; i < 10; i++) { System.out.println(b[i]); } if (b0 == (byte) 'G' && b1 == (byte) 'I' && b2 == (byte) 'F') { return "gif"; } else if (b1 == (byte) 'P' && b2 == (byte) 'N' && b3 == (byte) 'G') { return "png"; } else if (b6 == (byte) 'J' && b7 == (byte) 'F' && b8 == (byte) 'I' && b9 == (byte) 'F') { return "jpg"; } else { return null; } } else { return null; } } public static void main(String[] args) { File file = new File("D:/home/ubuntu/BoneAgeDemo/CT/JPG/20171229100855.jpg"); getFileType("D:/home/ubuntu/BoneAgeDemo/CT/JPG/f-d-5-2-20.tif"); getImageType(file); }
getImageType测了一下tif文件,其中的ASCII码为73 73 42 0 8 0 0 0 13 0,没有验证出来,其次就是读取图片带过来的长与宽,基本就是这样了
相关推荐
java文件的工具类,封装了常用的操作,尤其针对文件的实际类型,通过获取文件的byte,来查看文件起始字节的魔数值,通过魔数值来判断文件的类型,工具集合了常用的文件类型对应的魔数,也封装了文件类型的判断方法
java,判断ftp中文件是否存在
java文件判断 如果你不知道如何判断文件的类型,希望这篇能帮到你
Java判断文件的编码, 适用于utf-8和gbk码的判断。
java通过文件头内容判断文件类型
java后段判断文件是否为视频,传入文件MultipartFile,返回类型boolean,io异常抛出。简单方便没啥难度就是给懒汉用的。内部存在空文件校验直接返回否。
它的类库很小,只有500K左右,利用该类库判定文本文件的代码如下(由于cpdetector的算法使用概率统计,所以结果并不是100%准确的,但是是迄今为止我见过
通过java代码来判断本地文件是否存在
利用chardet,cpdetector包获取文件格式,并判断文件类型是否带BOM
java判断文件或文件夹,可以快速学会如何判断是文件夹还是文件
文件上传时,可以用java判断文件编码,jar包和java代码。有问题加Q280764207
若输出结果为0,则说明文件或目录存在,若为1,则说明文件或目录不存在。 二、Java代码实现 import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs....
一个判断文件为utf-8的java类,自己用有限状态机实现的,很好用的。
java判断文件编码格式 三方工具包 cpdetector_1.0.10.jar
1、判断文件是否存在,不存在创建文件 Filefile=newFile("C:\Users\QPING\Desktop\JavaScript\2.htm"); if(!file.exists()) { try{ file.createNewFile(); }catch(IOExceptione){ //TODOAuto...
验证文件类型,看看所选文件是不是图片: 代码如下: //文件类型: protected bool IsAllowableFileType(string FileName) { //从web.config读取判断文件类型限制 string stringstrFileTypeLimit; string
java项目中常使用到的工具类:zip压缩解压缩、rar解压(有密码的文件)、gz解压、FTP上传与下载
通用的文件字符编码集判断需要借助第三方包cpdetector.jar 使用Cpdetector jar包检测文件编码需要依赖antlr-2.7.7.jar、chardet-1.0.jar、jargs-1.0.jar三个jar包 本下载资源一站式全包含,并附带亲测有效的片段...
主要介绍了java判断一个文件是否为二进制文件的方法,涉及java针对文件的读取及编码判断技巧,具有一定参考借鉴价值,需要的朋友可以参考下
1.当Java.io中,如果文件的操作的时候,判断是否隐藏用File.ishiden() 判断是否只读,可用File.canWrite(). 2. 当要设置是否是可读或者是隐藏时,在java中除了提供File.setReadOnly()外,就无其他方法了。 所以我们...