`
mountain_king
  • 浏览: 17000 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

通过文件内容判定文件的类型

阅读更多

     估计当大家看到此片文件的标题后,会很疑惑,到底要阐述些什么呢?其实我一开始也疑惑,怎么会碰到这样的问题呀。事情是这样的,公司最早使用的是一个厂商的产品来存储影像,由于维护成本太高,决定新做一个系统进行影像的管理,但是老的影像数据不能丢了呀,就必然要将将老的影像迁移出来,重新存储并存储索引了。但是让人吐血的是,厂商只提供了一个socket接口,并且返回的竟然只有文件的二进制。纠结呀,我取到应该存成什么类型呀。还好此批数据基本上都是一些扫描件,而也就限定的其格式只有tif和jpg。但是如何通过二进制来将而至区分开呢?通过windows很纠结,你改成什么扩展名,它就认为是什么类型,根本无计可循。但是linux就不一样,通过file命令可以清楚的知道实际类型。从这一点看,我感觉通过文件的二进制应该是可以区别文件的类型的。

     

      和大家一样,遇到问题google、baidu,翻呀翻,终于通过一篇文档启发了我。是否可以通过二进制前几个字节转成16进制看看,是否会有所规律。没想到一试之下迎刃而解。。

 

package mimetype;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class MimeType {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		byte[] b=new byte[15];
		InputStream in=new FileInputStream(new File("D:\\Test\\2.jpg"));
		in.read(b);
		StringBuffer sb=new StringBuffer();
		for (int i = 0; i < b.length; i++) {
			String str=Integer.toHexString(b[i]);
			sb.append(str);
		}

		if(sb.toString().toUpperCase().startsWith("FFFFFFFFFFFFFFD8")){
			System.out.println("is jpg");
		}
		
		if(sb.toString().toUpperCase().startsWith("47494638")){
			System.out.println("is tif");
		}
	}

}

 

可以看到jpg和tif的前面都有部分是相同,通过这点可以清楚的区分它们。但是我试了下其他类型,其它并不是完全准备,特别是微软的那些文件的类型很难区分,有兴趣的同学可以自己试试咯。。

0
0
分享到:
评论

相关推荐

    java通过文件头内容判断文件类型

    本篇文章将深入探讨如何在Java中通过文件头内容来判断文件类型。 首先,了解文件头的基本概念。文件头是指文件开始的一段字节,不同的文件格式会有不同的文件头结构。例如,JPEG图像文件的开头通常是"FF D8 FF E0...

    vb判定文件的小程序

    在VB(Visual Basic)...这个"vb判定文件的小程序"可能就包含了以上这些功能,让使用者能够方便地检查和管理他们的文件。通过学习和理解这些VB编程知识,开发者可以创建更复杂的文件管理系统,满足不同场景下的需求。

    php文件上传及mime类型大全.doc

    PHP 文件上传是指通过 PHP 语言将文件上传到服务器的过程,该过程涉及到多个方面,如文件上传的限制、文件类型的判定、文件的保存路径等。下面是 PHP 文件上传的详细知识点: 1. 文件上传的限制 在 PHP 中,文件...

    java程序判断文件编码的类型

    本文档旨在教导读者如何通过Java编程语言来判断文件的编码类型。这包括常见的编码格式如GBK、UTF-8等。了解文件编码对于处理多语言环境下的文本数据至关重要。 #### 详细知识点解析 ##### 文件编码类型简介 文件...

    判断文件是文本文件还是二进制文件

    判断文件类型的常见方法是通过检查文件的前几个字节,这些字节通常包含了文件的“魔数”或“签名”,它们是特定文件格式的标识。例如,JPEG图像文件通常以FF D8 FF E0或FF D8 FF E1开始,PDF文件以%PDF-开头,而ZIP...

    文件拖动并打开文件,将文件拖入窗口即可打开文件

    - 对于每个文件路径,调用ShellExecute()函数,指定"open"操作,让系统根据文件类型使用默认程序打开文件。 6. **代码示例**: ```cpp afx_msg void CMyApp::OnDropFiles(HDROP hDropInfo) { int count = ...

    PE文件格式的判断

    PE文件格式,全称为Portable Executable,是Windows操作系统中用于存放可执行程序、动态链接库(DLL)等类型的文件的标准格式。在Windows环境下,无论是.exe应用程序还是.dll库,都遵循PE文件格式。本篇文章将深入...

    Java判断文件编码格式 - 明明是悟空 - 博客园1

    在Java编程中,判断文件编码格式是一项常见的任务,特别是在处理包含多国语言或者用户自定义内容的文件时。本文将探讨如何使用Java进行文件编码格式的识别,主要介绍两种方法:一种是简单的UTF-8判断,另一种是使用...

    C++ 判定FAT分区类型

    在计算机存储系统中,...综上所述,C++中判定FAT分区类型涉及到对文件系统结构的理解,包括引导扇区、BPB的解析以及根据特定字段进行判断。掌握这些知识不仅有助于实现特定功能,还有助于提升对存储系统的深入理解。

    一段代码演示C++根据路径判定是目录还是文件,文件搜索,文件夹遍历等问题.docx

    - 通过 `EndWith` 函数检查文件名是否以特定扩展名(如 `.txt`)结尾,来判断文件类型。 7. **目录与文件的区分**: - 使用 `_stat` 函数获取文件状态,其返回的结构体中 `st_mode` 字段包含了文件类型信息。如果...

    java 解析Excel 并判断解析的数据类型__Eclipse工程

    2. **打开工作簿**:使用`WorkbookFactory.create()`方法加载Excel文件,根据文件类型(.xls 或 .xlsx)选择合适的工厂方法。 3. **遍历工作表**:工作簿中包含了多个工作表,可以通过`Workbook.getSheetAt(int ...

    ICT文件判断

    2. **文件关键字判定**:这是一种文件内容分析技术,通过查找特定字符串(关键字)来确定文件的类型、内容或目的。例如,如果一个文本文件包含“Hello, World!”,这可能是识别它为C++程序的标志。关键字判定可以...

    Java判定文件编码或文本流编码的方法[文].pdf

    通过读取并分析这些字节,可以初步判断文件的编码类型。 3. **简单的Java编码判断示例**:如描述中所示,我们可以创建一个`FileInputStream`来读取文件的前三个字节,然后比较这些字节值来确定文件是否为UTF-8编码...

    JS 获取文件后缀,判断文件类型(比如是否为图片格式)

    1、获取文件后缀 有时候我们需要通过文件名或者路径,得到该文件的后缀...2、文件类型判断 我们得到文件后缀名后,根据后缀即可判断文件的类型(文件格式)。比如我们需要判断一个文件是否是图片格式,首先定义一个判断

    从pcap文件中析取所有TCP会话与UDP会话

    ### 从pcap文件中析取所有...通过上述算法,我们可以有效地从pcap文件中提取所有的TCP和UDP会话,并将它们整理成易于分析的形式。这种技术对于深入理解网络通信行为、进行安全审计和故障排查等方面具有重要的应用价值。

    一段代码演示C++根据路径判定是目录还是文件,文件搜索,文件夹遍历等问题.pdf

    `_stat`结构体中的`st_mode`字段包含了文件类型信息,其中`_S_IFDIR`是一个标志位,表示目录。如果`fileStat.st_mode & _S_IFDIR`为真,则表明路径是一个目录。 2. **文件搜索**: 使用`_findfirst`和`_findnext`...

    重要环境因素识别判定表.pdf

    由于提供的文件内容实际并未包含可识别的知识点,而是由数字和重复字符组成的序列,无法从中提取出有意义的信息,因此无法生成与标题“重要环境因素识别判定表.pdf”和描述中所提到的具体知识点。但根据标题和描述中...

    c#检测图片大小,类型

    图片的类型通常是通过查看文件的头几个字节(也称为文件签名或魔数)来确定的。不同的图片格式有不同的头信息。例如,JPEG图片的头信息通常以FF D8 FF E0或FF D8 FF E1开头,PNG则以89 50 4E 47 0D 0A 1A 0A开头,...

    文件操作详解(C语言版本)超级详细.pdf

    本篇文章详细讲解了 C 语言中的文件操作,包括文件的概念、文件名、文件类型、文件缓冲区、文件的打开与关闭、文件的读写和文件结束的判定。这些知识点对于学习 C 语言的学生和程序员都是非常重要的。

Global site tag (gtag.js) - Google Analytics