web判断文件的格式的时候,我们一般都是通过扩展名来判断,这个有点不太靠谱和安全。一般要判断是利用头文件来判断。下面是利用头文件来判断的代码:
package com.app.util; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class T { public static String bytesToHexString(byte[] src){ StringBuilder strBuilder = new StringBuilder(); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) { int v = src[i] & 0xFF; String strhs = Integer.toHexString(v); if (strhs.length() < 2) { strBuilder.append(0); } strBuilder.append(strhs); } return strBuilder.toString(); } /** * 根据文件流读取图片文件真实类型 * @param is * @return */ public static String getTypeByStream(FileInputStream is) { byte[] b = new byte[4]; try { is.read(b, 0, b.length); } catch (IOException e) { e.printStackTrace(); } String type = bytesToHexString(b).toUpperCase(); if (type.contains("FFD8FF")) { return "jpg"; } else if (type.contains("89504E47")) { return "png"; } else if (type.contains("47494638")) { return "gif"; } else if (type.contains("49492A00")) { return "tif"; } else if (type.contains("424D")) { return "bmp"; } return type; } public static void main(String args[]) { // String src = "D:/workspace//8129.jpg"; // String src = "D:/workspace//temp/1.gif"; String src = "D:/003-004-join.jpg"; FileInputStream is = null; try { is = new FileInputStream(src); } catch (FileNotFoundException e) { e.printStackTrace(); } // byte[] b = new byte[4]; // is.read(b, 0, b.length); // System.out.println(bytesToHexString(b)); String type = getTypeByStream(is); System.out.println(type); } }
网上搜索了一些头文件的格式,但是强调一下,txt文件没有固定的头名,需要另外考虑,供参考:
- 用文件头判断。直接读取文件的前几个字节。
- 常用文件的文件头如下:
- JPEG (jpg),文件头:FFD8FF
- PNG (png),文件头:89504E47
- GIF (gif),文件头:47494638
- TIFF (tif),文件头:49492A00
- Windows Bitmap (bmp),文件头:424D
- CAD (dwg),文件头:41433130
- Adobe Photoshop (psd),文件头:38425053
- Rich Text Format (rtf),文件头:7B5C727466
- XML (xml),文件头:3C3F786D6C
- HTML (html),文件头:68746D6C3E
- Email [thorough only] (eml),文件头:44656C69766572792D646174653A
- Outlook Express (dbx),文件头:CFAD12FEC5FD746F
- Outlook (pst),文件头:2142444E
- MS Word/Excel (xls.or.doc),文件头:D0CF11E0
- MS Access (mdb),文件头:5374616E64617264204A
- WordPerfect (wpd),文件头:FF575043
- Postscript. (eps.or.ps),文件头:252150532D41646F6265
- Adobe Acrobat (pdf),文件头:255044462D312E
- Quicken (qdf),文件头:AC9EBD8F
- Windows Password (pwl),文件头:E3828596
- ZIP Archive (zip),文件头:504B0304
- RAR Archive (rar),文件头:52617221
- Wave (wav),文件头:57415645
- AVI (avi),文件头:41564920
- Real Audio (ram),文件头:2E7261FD
- Real Media (rm),文件头:2E524D46
- MPEG (mpg),文件头:000001BA
- MPEG (mpg),文件头:000001B3
- Quicktime (mov),文件头:6D6F6F76
- Windows Media (asf),文件头:3026B2758E66CF11
- MIDI (mid),文件头:4D546864
相关推荐
在Java编程中,判断文件类型通常不是通过文件扩展名,而是通过读取文件的头部字节来识别。这是因为有些文件可能没有明确的扩展名,或者扩展名被恶意篡改。文件头内容通常包含特定的标识符,这些标识符是文件格式的...
然后,使用 HashMap 缓存文件头信息,通过文件头信息来判断文件的真正类型。 以下是 Java 实现上传文件类型检测过程解析的示例代码: ```java import java.io.*; import java.util.HashMap; public class ...
根据头信息判断文件类型是计算机科学中的一个常见技术,它基于这样一个事实:大多数文件格式在开始部分都会包含一些特定的字节序列,这些序列被称为“魔术数字”或“文件签名”,用于标识文件的类型。这种方法在很多...
Java如何实现判断文件的真实类型 Java判断文件真实类型是非常重要的,因为在文件传输过程中,为了安全验证,对于手工改动文件后缀名产生的伪造文件进行判断过滤。Java判断文件真实类型依靠的是文件的头部编码信息。...
为了提高识别的准确性,我们可以依据文件头信息来判断文件类型。文件头通常包含特定的字节序列,这些序列是文件格式的标识符。 本文将详细介绍一种在Android中使用Java根据文件头获取文件类型的实现方法。这个方法...
本项目提供了一个用Java语言编写的SEGY数据文件读取和解析程序,它还利用了Visualization Toolkit (VTK)库来实现简单的数据可视化。 Java是一种多平台、面向对象的编程语言,具有良好的跨平台性、丰富的类库以及...
我们可以使用FileInputStream来读取文件头,然后将其转换为十六进制字符串,最后使用TypeDict类来判断文件的格式类型。 下面是具体的代码实现: 首先,我们需要定义一个TypeDict类来存储常用的文件头信息: ```...
根据提供的文件信息,我们可以深入探讨JSP(JavaServer Pages)技术中的头部文件配置与使用,以及JSP在Java Web开发中的重要角色。 ### JSP头部文件概述 JSP页面是Java Web开发中的一种动态网页技术,它允许将静态...
HelloNative.java 准备调用C函数的java文件 HelloNative.lib 用VC编译生成的静态库文件 HelloNative.obj 用VB编译生成的目标文件 HelloNativeTest.java 测试本地化是否成功的类文件 instanceVar.java 定义一个...
3. **Java字节码解释器**:在Java中,`java.exe`是Java字节码解释器,它负责解释执行`.class`文件中的字节码,使得程序能够在不同操作系统上运行,体现Java的平台无关性。 4. **JDK、JRE和JVM**:JDK(Java ...
2. **Java编程**: `java 根据头文件码判断文件类型.txt`可能讲解了如何在Java程序中通过文件的魔数或头信息来识别文件类型,这对于处理未知类型的文件很有用。而`统计Java源文件的代码行.txt`可能涉及到源代码分析,...
在C++中,没有像Java那样的内置函数可以直接判断路径是目录还是文件。在Windows系统下,可以使用`_stat`函数从`sys/stat.h`头文件获取文件状态信息。`_stat`结构体中的`st_mode`字段包含了文件类型信息,其中`_S_...
- **头文件与宏定义**:Java不使用头文件,也不支持宏定义,而是使用`import`语句导入类和包,并使用`final`关键字定义常量。 - **多重继承**:Java不支持传统的多重继承,而是通过接口来实现多重继承。 - **数据...
- 头文件:Java不依赖头文件,简化了维护。 - 常量定义:Java用final关键字,C++用宏定义。 - 数据类型长度:Java固定,跨平台性好。 - 类型转换:Java更安全,有类型检查。 - 结构和联合:Java无此概念,用类...
JAVA_HOME应指向JDK的安装目录,PATH应包含JDK的bin目录,以便能找到Java可执行文件,而CLASSPATH则指定类库的搜索路径。 Java中的注释有三种类型:单行注释(//)、多行注释(/*...*/)和文档注释(/**...*/),后...
文件名称列表中的"hunspell-1.3.2"可能是指Hunspell库的一个版本,通常包括了必要的头文件、库文件以及词典文件。这些文件对于理解Hunspell的工作机制和构建Java源码项目是必不可少的。开发者可以结合源代码和这些库...
开发者可以根据需求自定义 Appender 类型。 5. **Layout** Layout 用于格式化日志消息。比如,PatternLayout 允许自定义输出格式,SimpleLayout 提供简单的默认格式。通过配置,可以选择不同的布局模式,以便于...
在读取或写入文件时,文件指针会根据操作移动,从而定位下一次操作的位置。在C/C++等低级语言中,开发者需要显式地管理文件指针,以控制读写位置。而在Java中,使用InputStream和OutputStream类时,文件位置的管理被...
`PolicySpi.c`和`define.h`这两个文件看起来可能是C语言或者C++的源代码和头文件,这可能表示在Java的JNI(Java Native Interface)环境下,有人尝试用原生代码实现`PolicySpi`的部分功能。JNI允许Java代码调用本地...
将C++文件放置在项目适当的位置,并确保正确地编译成库文件供Java调用。 综上所述,通过JNI接口,可以在Cocos2dx环境下轻松实现C++与Java之间的相互调用,从而更好地发挥Cocos2dx跨平台游戏引擎的优势。