返回顶部
首页 > 资讯 > 精选 >Java中怎么获取文件类型
  • 400
分享到

Java中怎么获取文件类型

2023-06-15 18:06:53 400人浏览 独家记忆
摘要

Java中怎么获取文件类型,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.根据文件扩展名判断优点:速度快,代码简单缺点:无法判断出真实的文件类型,例如一些伪造的文件或者没有后

Java中怎么获取文件类型,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

1.根据文件扩展名判断

  • 优点:速度快,代码简单

  • 缺点:无法判断出真实的文件类型,例如一些伪造的文件或者没有后缀名称的文件

2.根据文件流中前几个字符判断

优点:可以判断出真实的文件类型

缺点:速度慢,代码复杂

下面我会针对每个方法,去测试验证,测试文件如下:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. test.png: 创建一个正常的png文件,其扩展名为test.png

  3. test.doc: 复制一份上面的test.png文件,修改其文件名称为test.doc

1. 使用Files.probeContentType

Java1.7开始,提供了用于解决MIME类型的方法  Files.probeContentType:

public static void test() throws ioException {     Path path = new File("d:/test.png").toPath();     String mimeType = Files.probeContentType(path);     System.out.println(mimeType); }

结果:

Java中怎么获取文件类型

此方法利用已安装的FileTypeDetector实现来探查MIME类型。它调用每个实现的 probeContentType来解析类型。

但是,其默认实现是特定于操作系统的,并且可能会失败,具体取决于我们使用的操作系统。

结论:根据文件扩展名判断。

2. 使用URLConnection

URLConnection提供了几种用于检测文件的MIME类型的api

2.1 使用getContentType

public void test(){     File file = new File("d:/test.png");     URLConnection connection = file.toURL().openConnection();     String mimeType = connection.getContentType(); }

结果:

Java中怎么获取文件类型

结论:根据文件流中前几个字符判断。能够判断真实的文件类型,但是,这种方法的主要缺点是速度非常慢

2.2 使用guessContentTypeFromName

public void test(){     File file = new File("d:/test.png");     String mimeType = URLConnection.guessContentTypeFromName(file.getName()); }

结果:

Java中怎么获取文件类型

该方法利用内部的FileNameMap来判断MIME类型。

结论:根据文件扩展名判断。

2.3 使用guessContentTypeFromStream

public static void test() throws Exception {     FileInputStream inputFile = new FileInputStream("d:/test.doc");     String mimeType = URLConnection.guessContentTypeFromStream(new BufferedInputStream(inputFile));     System.out.println(mimeType); }

结果

Java中怎么获取文件类型

结论:根据文件流中前几个字符判断。

2.4 使用getFileNameMap

使用URLConnection获得MIME类型的更快方法是使用getFileNameMap()方法:

public void test(){     File file = new File("d:/test.png");     FileNameMap fileNameMap = URLConnection.getFileNameMap();     String mimeType = fileNameMap.getContentTypeFor(file.getName()); }

结果

 Java中怎么获取文件类型

该方法返回URLConnection的所有实例使用的MIME类型表。然后,该表用于解析输入文件类型。

当涉及URLConnection时,MIME类型的内置表非常有限。

默认情况下,该类使用content-types.properties文件,其所在目录为JRE_HOME/lib。但是,我们可以通过使用content.types.user.table属性指定用户特定的表来扩展它  :

System.setProperty("content.types.user.table","<path-to-file>");

结论:根据文件扩展名判断。

3. 使用MimeTypesFileTypeMap

该类是Java 6附带的,因此在使用jdk 1.6时非常方便。

public void test() {     File file = new File("product.png");     MimetypesFileTypeMap fileTypeMap = new MimetypesFileTypeMap();     String mimeType = fileTypeMap.getContentType(file.getName()); }

结果:

Java中怎么获取文件类型

在这里,我们可以将文件名或File实例本身作为参数传递给函数。但是,以File实例为参数的函数在内部调用重载方法,该方法接受文件名作为参数。

在内部,此方法查找名为mime.types的文件以进行类型解析。请务必注意,该方法以特定顺序搜索文件:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 编程方式将条目添加到MimetypesFileTypeMap实例

  3. 用户主目录中的mime.types

  4. /lib/mime.types
  5. 名为META-INF / mime.types的资源

  6. 名为META-INF / mimetypes.default的资源(通常仅在activation.jar文件中找到)

但是,如果找不到文件,它将返回application/octet-stream作为响应。

结论:根据文件扩展名判断。

4. 使用jmimemagicjMimeMagic

是一个受限制许可的库,我们可以使用它来获取文件的MIME类型。

配置Maven依赖:

<dependency>     <groupId>net.sf.jmimemagic</groupId>     <artifactId>jmimemagic</artifactId>     <version>0.1.5</version> </dependency>

接下来,我们将探讨如何使用该库:

public void test() {         File file = new File("d:/test.doc");         MagicMatch match = Magic.getMagicMatch(file, false);         System.out.println(match.getMimeType()); }

该库可以处理数据流,因此不需要文件存在于文件系统中。

结果:

Java中怎么获取文件类型

结论:根据文件流中前几个字符判断。

5. 使用Apache TikaApache  Tika

是一个工具集,可检测并从各种文件中提取元数据和文本。它具有丰富而强大的API,并带有[tika-core],我们可以利用它来检测文件的MIME类型。

配置Maven依赖:

<dependency>     <groupId>org.apache.tika</groupId>     <artifactId>tika-core</artifactId>     <version>1.18</version> </dependency>

接下来,我们将使用detect()方法来解析类型:

public void whenUsingTika_thenSuccess() {     File file = new File("d:/test.doc");     Tika tika = new Tika();     String mimeType = tika.detect(file); }

结果

Java中怎么获取文件类型

结论:根据文件流中前几个字符判断。

总结

根据判断原理总结分类如下:

Java中怎么获取文件类型

看完上述内容,你们掌握Java中怎么获取文件类型的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: Java中怎么获取文件类型

本文链接: https://lsjlt.com/news/281142.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java中怎么获取文件类型
    Java中怎么获取文件类型,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.根据文件扩展名判断优点:速度快,代码简单缺点:无法判断出真实的文件类型,例如一些伪造的文件或者没有后...
    99+
    2023-06-15
  • Android中Java根据文件头获取文件类型的方法
    本文实例讲述了Android中Java根据文件头获取文件类型的方法。分享给大家供大家参考,具体如下: 前面讲过Android系统内部的MediaFile类来获取文件类型的办法,...
    99+
    2022-06-06
    JAVA 方法 文件头 文件类型 Android
  • Python 获取文件类型后缀
    import os path='file.txt' file=os.path.splitext(path) filename,type=file print(filename) print(type)点击打开链接 Python资料汇总 ...
    99+
    2023-01-31
    后缀 文件类型 Python
  • java怎么获取对象的类型
    在Java中,可以使用getClass()方法来获取对象的类型。getClass()方法是Object类的方法,因此所有Java对象...
    99+
    2023-09-22
    java
  • php怎么获取文件类型(不通过后缀)
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑php获取文件类型(不通过后缀)方法1:$_FILES如果是php上传文件,则可以用$_FILES['uploadfile']['type...
    99+
    2020-01-06
    php 获取文件类型
  • Java获取泛型类型信息
    根据使用泛型位置的不同可以分为:声明侧泛型、使用侧泛型。 声明侧的泛型信息被记录在Class文件的Constant pool中以Signature的形式保存。而使用侧的泛型信息并没有保存。 声明侧泛型 声明侧泛型包括: 泛型类,或泛型接口的...
    99+
    2023-09-18
    java 开发语言
  • php如何获取文件的MIME类型
    这篇文章主要介绍“php如何获取文件的MIME类型”,在日常操作中,相信很多人在php如何获取文件的MIME类型问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php如何获取文件的MIME类型”的疑惑有所帮助!...
    99+
    2023-06-29
  • Java中如何获取泛型类型信息
    这篇文章主要讲解了“Java中如何获取泛型类型信息”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中如何获取泛型类型信息”吧!根据使用泛型位置的不同可以分为:声明侧泛型、使用侧泛型。声...
    99+
    2023-07-05
  • java怎么获取文件大小
    目前Java获取文件大小的方法有两种:通过file的length()方法获取;通过流式方法获取;通过流式方法又有两种,分别是旧的java.io.*中FileInputStream的available()方法和新的java..nio.*中的F...
    99+
    2016-09-27
    java基础 java
  • java怎么获取当前日期date类型
    在 Java 中获取当前日期的方法之一是使用 java.util.Date 类。可以通过以下代码获取当前日期的 Date 类型对象:...
    99+
    2024-03-14
    java
  • java怎么获取文件流的文件名
    在Java中,可以通过File类的getName()方法来获取文件流的文件名。例如: import java.io.File; p...
    99+
    2024-02-29
    java
  • Java中获取泛型类型信息的方法
    目录声明侧泛型使用侧泛型获取泛型类型相关方法1. Class类的泛型方法2. Field类的泛型方法3. Method类的泛型方法4. ParameterizedType类获取使用侧...
    99+
    2023-03-08
    Java获取泛型类型信息 Java 泛型类型信息
  • C++中怎么获取文件
    本篇文章给大家分享的是有关C++中怎么获取文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  char *txt = NUL...
    99+
    2023-06-17
  • 怎么使用java反射获取字段类型
    要使用Java反射获取字段类型,可以按照以下步骤进行:1. 获取对应类的Class对象,可以通过`Class.forName()`方...
    99+
    2023-10-10
    java
  • Python数据类型怎么获取
    这篇文章主要介绍“Python数据类型怎么获取”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python数据类型怎么获取”文章能帮助大家解决问题。内置数据类型在编程中,数据类型是一个重要的概念。变量...
    99+
    2023-07-05
  • Java中怎么读取FileReader字符文件类
    今天就跟大家聊聊有关Java中怎么读取FileReader字符文件类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。今天介绍字符文件的读取,分别用FileReaderFileReade...
    99+
    2023-06-17
  • PHP中怎么获取字段数据类型
    这篇文章给大家介绍PHP中怎么获取字段数据类型,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。mysql_field_type()函数可获得字段的数据类型,该函数的语法格式如下。string mysql_field_ty...
    99+
    2023-06-17
  • java怎么获取配置文件参数
    在Java中,可以使用`java.util.Properties`类来读取配置文件中的参数。以下是一个简单的示例:首先,创建一个名为...
    99+
    2023-09-28
    java
  • java怎么根据url获取文件流
    Java可以使用`java.net.URL`类来打开一个URL连接,并获取该URL对应的输入流。以下是一个简单的示例代码:```ja...
    99+
    2023-10-11
    java
  • java怎么获取当前文件路径
    在Java中,可以使用System.getProperty("user.dir")来获取当前文件的路径。这会返回一个字符串,表示当前...
    99+
    2023-10-21
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作