`
sealbird
  • 浏览: 583964 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[转]用java流方式判断文件类型

    博客分类:
  • JAVA
阅读更多
文章分类:Java编程 
今天在群里面看有人贴的一个帖子,觉得挺不错的,转过来。 
来源:http://topic.csdn.net/u/20100430/11/1e14634d-0045-47f8-9e1b-f8fd52ba1597.html?seed=881844262&r=65101569#r_65101569 

用文件头判断。直接读取文件的前几个字节。 


常用文件的文件头如下: 

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 


测试代码 

package org.test;

import java.io.FileInputStream;

public class Test {

    public 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 args
     */
    public static void main(String[] args) throws Exception {
        FileInputStream is = new FileInputStream("D:\\face.jpg");
        byte[] b = new byte[3];
        is.read(b, 0, b.length);
        System.out.println(bytesToHexString(b));

    }

}
分享到:
评论
2 楼 antor 2011-12-29  
留个记号,学习了
1 楼 maimode 2011-04-08  
请问,我现在已经得到了文件的数据,放在字节数组中,现在如何根据这个数组中的数据识别文件类型,(我想通过调用java的方法实现,不要自己去取特征码然后查表得到),能帮我出出主意吗?

相关推荐

    java实现上传文件类型检测过程解析

    然后,使用 HashMap 缓存文件头信息,通过文件头信息来判断文件的真正类型。 以下是 Java 实现上传文件类型检测过程解析的示例代码: ```java import java.io.*; import java.util.HashMap; public class ...

    根据头信息判断文件类型

    根据头信息判断文件类型是计算机科学中的一个常见技术,它基于这样一个事实:大多数文件格式在开始部分都会包含一些特定的字节序列,这些序列被称为“魔术数字”或“文件签名”,用于标识文件的类型。这种方法在很多...

    java如何实现判断文件的真实类型

    为了解决在用户上传文件的时候在服务器端判断文件类型的问题,故用获取文件头的方式,直接读取文件的前几个字节,来判断上传文件是否符合格式。 二、Java获取文件头信息 Java可以通过文件输入流(FileInputStream)...

    Java判断文件的编码

    本文将详细介绍如何使用Java来判断文件是否为UTF-8或GBK编码,并提供一个示例代码。 #### 文件编码基础知识 1. **UTF-8**:一种可变长度的字符编码,适用于所有Unicode字符,它通过使用一种巧妙的方案来表示各种...

    java获取文件编码(判断有无BOM)

    本文将详细介绍如何在Java中获取文件的编码并判断文件是否带有BOM。 首先,让我们了解一下什么是BOM。BOM是UTF-8、UTF-16和UTF-32等编码格式中的一个可选标记,用于告知解析器文件的编码类型。例如,UTF-8的BOM是三...

    java判断编码方式

    在Java编程语言中,判断文件或字符串的编码方式是一个常见的需求。这主要涉及到字符集的概念,如ASCII、ISO-8859-1、UTF-8等,它们用于将二进制数据转换为人类可读的字符。在Java中,有多种方法可以用来识别或检测一...

    文件类型判断java

    本篇文章将深入探讨如何在Java中通过读取文件流的头二十个字节来判断文件类型。 首先,我们要理解为什么需要通过文件流的字节来判断类型。文件的后缀名仅仅是人为设定的标识,有时可能被篡改或丢失,而文件的实际...

    SpringBoot文件上传控制及Java 获取和判断文件头信息

    2. Java 获取和判断文件头信息:如何使用 Java 语言来获取和判断文件头信息,包括如何使用 MultipartFile 对象来获取文件信息,以及如何判断文件的类型和大小等信息。 3. Ajax 文件上传:如何使用 Ajax 方式上传文件...

    Java源代码打开指定类型的文件.rar

    在实际项目中,我们可能需要根据文件扩展名来判断文件类型,然后调用相应的处理方法。例如: ```java String extension = file.getName().substring(file.getName().lastIndexOf(".") + 1); if ("txt"....

    java将m3u8格式转成视频文件的方法

    Java 将 M3U8 格式转成视频文件的方法 Java 是当前最流行的编程语言之一,广泛应用于 Android 和 Web 开发中。在视频处理方面,Java 也提供了强大的支持。M3U8 是一种广泛使用的视频流格式,经常用于直播和点播等...

    java文件流

    File 类提供了许多方法来操作文件和目录,如创建文件、删除文件、判断文件是否存在等。 文件操作——以字节流方式写文件 在 Java 中,可以使用字节流来写文件。写文件可以使用 FileOutputStream 类,将数据写入到...

    java 文件编码转换

    Chardet(字符集检测)通常是基于统计模型来判断文件最有可能采用的编码方式。例如,它可以分析字节序列并根据不同的字符集概率进行匹配。这种技术在处理非UTF-8编码的文件时非常关键,因为如果没有正确识别源编码,...

    java 判断两个文件是否相同

    这时可以考虑使用`java.io.FileInputStream`流逐块读取并比较。另外,为了提高效率,可以先计算文件的MD5或SHA哈希值,这是一种快速且可靠的文件内容校验方法。 ```java import java.io.FileInputStream; import ...

    Java 使用javaCV、ffmpeg拉流H265 RTSP转推H264 RTMP可获取流访问人数(源代码)

    2)、可选择使用javaCV推流、ffmpeg推流两种方式。 3)、javaCV仅支持拉去或推送H264压缩方式的流。 4)、ffmpeg采用命令的方式拉流和推流,支持H265和H264。 5)、支持获取流的访问数,可设置自动关闭0访问数的...

    JAVA实现文件类型预处理

    在Java编程中,文件类型预处理是一个重要的环节,特别是在处理大量数据或进行文件操作时。这一过程涉及到识别、转换和优化文件以便后续处理。本文将深入探讨如何利用Java实现文件类型的预处理,以及与之相关的数据...

    java读取excel多个sheet内容,用流的方式判断excel版本

    用poi读取excel多个sheet内容,用流的方式判断excel的版本,2003,还是2007版本,并附带所需jar包,文件下载后解压,直接导入eclipse中即可使用

    java 解析 tar gz文件 两种方法

    在Java中解析这种类型的文件,通常需要两个步骤:首先解压gzip,然后解包tar。这里我们将详细探讨两种不同的方法来实现这个过程。 方法一:使用Apache Commons Compress库 Apache Commons Compress库是Java社区...

    JAVA程序设计判断题题库81道

    Java是一种广泛使用的高级编程语言,以其跨平台、安全性强...总的来说,这些题目覆盖了Java程序设计的基础概念,包括语法、面向对象、数据类型、控制流、数组以及类和对象的使用,是学习和理解Java编程的良好练习材料。

    用java解析DXF文件中的实体信息

    这是因为DXF文件默认可能不使用Unicode编码,而Java标准输入输出流通常以UTF-8为默认编码。为了解决这个问题,我们需要在读取文件时指定正确的编码,例如GBK或GB2312,这取决于DXF文件的源编码。例如: ```java ...

    Java以流的形式上传文件

    - 通过 `if (inFile.length() * 1024 * 5)` 来判断文件大小是否小于5MB,这是一个简单的大小限制实现。 6. **读写操作**: - 使用 `in.read(buffer)` 读取缓冲区中的数据,当返回值大于0时,表示读取到了数据,...

Global site tag (gtag.js) - Google Analytics