估计当大家看到此片文件的标题后,会很疑惑,到底要阐述些什么呢?其实我一开始也疑惑,怎么会碰到这样的问题呀。事情是这样的,公司最早使用的是一个厂商的产品来存储影像,由于维护成本太高,决定新做一个系统进行影像的管理,但是老的影像数据不能丢了呀,就必然要将将老的影像迁移出来,重新存储并存储索引了。但是让人吐血的是,厂商只提供了一个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的前面都有部分是相同,通过这点可以清楚的区分它们。但是我试了下其他类型,其它并不是完全准备,特别是微软的那些文件的类型很难区分,有兴趣的同学可以自己试试咯。。
分享到:
相关推荐
本篇文章将深入探讨如何在Java中通过文件头内容来判断文件类型。 首先,了解文件头的基本概念。文件头是指文件开始的一段字节,不同的文件格式会有不同的文件头结构。例如,JPEG图像文件的开头通常是"FF D8 FF E0...
在VB(Visual Basic)...这个"vb判定文件的小程序"可能就包含了以上这些功能,让使用者能够方便地检查和管理他们的文件。通过学习和理解这些VB编程知识,开发者可以创建更复杂的文件管理系统,满足不同场景下的需求。
PHP 文件上传是指通过 PHP 语言将文件上传到服务器的过程,该过程涉及到多个方面,如文件上传的限制、文件类型的判定、文件的保存路径等。下面是 PHP 文件上传的详细知识点: 1. 文件上传的限制 在 PHP 中,文件...
本文档旨在教导读者如何通过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文件格式,全称为Portable Executable,是Windows操作系统中用于存放可执行程序、动态链接库(DLL)等类型的文件的标准格式。在Windows环境下,无论是.exe应用程序还是.dll库,都遵循PE文件格式。本篇文章将深入...
在Java编程中,判断文件编码格式是一项常见的任务,特别是在处理包含多国语言或者用户自定义内容的文件时。本文将探讨如何使用Java进行文件编码格式的识别,主要介绍两种方法:一种是简单的UTF-8判断,另一种是使用...
在计算机存储系统中,...综上所述,C++中判定FAT分区类型涉及到对文件系统结构的理解,包括引导扇区、BPB的解析以及根据特定字段进行判断。掌握这些知识不仅有助于实现特定功能,还有助于提升对存储系统的深入理解。
- 通过 `EndWith` 函数检查文件名是否以特定扩展名(如 `.txt`)结尾,来判断文件类型。 7. **目录与文件的区分**: - 使用 `_stat` 函数获取文件状态,其返回的结构体中 `st_mode` 字段包含了文件类型信息。如果...
2. **打开工作簿**:使用`WorkbookFactory.create()`方法加载Excel文件,根据文件类型(.xls 或 .xlsx)选择合适的工厂方法。 3. **遍历工作表**:工作簿中包含了多个工作表,可以通过`Workbook.getSheetAt(int ...
2. **文件关键字判定**:这是一种文件内容分析技术,通过查找特定字符串(关键字)来确定文件的类型、内容或目的。例如,如果一个文本文件包含“Hello, World!”,这可能是识别它为C++程序的标志。关键字判定可以...
通过读取并分析这些字节,可以初步判断文件的编码类型。 3. **简单的Java编码判断示例**:如描述中所示,我们可以创建一个`FileInputStream`来读取文件的前三个字节,然后比较这些字节值来确定文件是否为UTF-8编码...
1、获取文件后缀 有时候我们需要通过文件名或者路径,得到该文件的后缀...2、文件类型判断 我们得到文件后缀名后,根据后缀即可判断文件的类型(文件格式)。比如我们需要判断一个文件是否是图片格式,首先定义一个判断
### 从pcap文件中析取所有...通过上述算法,我们可以有效地从pcap文件中提取所有的TCP和UDP会话,并将它们整理成易于分析的形式。这种技术对于深入理解网络通信行为、进行安全审计和故障排查等方面具有重要的应用价值。
`_stat`结构体中的`st_mode`字段包含了文件类型信息,其中`_S_IFDIR`是一个标志位,表示目录。如果`fileStat.st_mode & _S_IFDIR`为真,则表明路径是一个目录。 2. **文件搜索**: 使用`_findfirst`和`_findnext`...
由于提供的文件内容实际并未包含可识别的知识点,而是由数字和重复字符组成的序列,无法从中提取出有意义的信息,因此无法生成与标题“重要环境因素识别判定表.pdf”和描述中所提到的具体知识点。但根据标题和描述中...
图片的类型通常是通过查看文件的头几个字节(也称为文件签名或魔数)来确定的。不同的图片格式有不同的头信息。例如,JPEG图片的头信息通常以FF D8 FF E0或FF D8 FF E1开头,PNG则以89 50 4E 47 0D 0A 1A 0A开头,...
本篇文章详细讲解了 C 语言中的文件操作,包括文件的概念、文件名、文件类型、文件缓冲区、文件的打开与关闭、文件的读写和文件结束的判定。这些知识点对于学习 C 语言的学生和程序员都是非常重要的。