即使文件扩展名已更改,如何识别文件类型?

2023-12-30

文件按文件扩展名分类。所以我的问题是,即使文件扩展名已更改,如何识别文件类型。

例如,我有一个名为myVideo.mp4,我已将其更改为myVideo.txt。因此,如果我双击它,首选文本编辑器将打开该文件,但不会打开确切的内容。但是,如果我玩myVideo.txt在视频播放器中,视频将毫无问题地播放。

我只是想开发一个应用程序来确定文件类型,而不检查文件扩展名并建议打开文件的软件。我想用 Java 开发该应用程序。


做到这一点的最好的库之一是阿帕奇蒂卡 https://tika.apache.org/。它不仅读取文件的标头,还能够执行内容分析以检测文件类型。使用 Tika 非常简单,下面是检测文件类型的示例:

import java.net.URL;
import org.apache.tika.Tika; //Including Tika

public class TestTika {

    public static void main(String[] args) {
        Tika tika = new Tika();
        String fileType = tika.detect(new URL("http://example.com/someFile.jpg"));
        System.out.println(fileType);
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

即使文件扩展名已更改,如何识别文件类型? 的相关文章

随机推荐

  • Scala Play 框架 Web 应用程序托管流程

    我正在使用 scala 和 play 框架从事一个网络项目 我担心应用程序部署部分 我需要在 Glass Fish 服务器中托管我的应用程序 那么有人有这方面的经验吗 我有托管 javaEE 应用程序将 war 文件上传到服务器的经验 但我
  • PHP 警告:unpack():类型 n:输入不足 - 日志条目

    所以我找到了这个错误日志 PHP Warning unpack Type n not enough input need 2 have 0 in file line 所述文件和行包含以下代码 answerHeader unpack ntyp
  • R:所有排列的前 N ​​个

    我正在寻找一个函数 可以列出所有n 给定输入向量的排列 通常只是序列1 n 也可以只列出所有 n 中的前 N 排列 第一个要求得到满足 例如permn 从包装中combinat permutations 从包装中e1071 or permu
  • ng-controller 指令和路由中的控制器有什么区别?

    我通过了AngularJS 网站上的教程 http docs angularjs org tutorial我注意到在step 7 http docs angularjs org tutorial step 07 它们改变了将控制器引入应用程
  • 查找 Git 存储库的大小

    查找 Git 存储库大小的简单方法是什么 我的意思不是du h在我的存储库的根目录中 我有很多被忽略的文件 因此该大小与我的存储库总大小不同 我本质上想知道克隆我的存储库时会传输多少数据 请注意 自从git 1 8 3 2013 年 4 月
  • ACR122u卡仿真模式发送PN532命令

    我刚刚读过this https stackoverflow com a 23197444 1852589回答有关如何将我的 ACR122U 置于卡模拟模式的问题 我确实明白其目的 但您需要如何将命令发送到 ACR122u 据我所知 FF00
  • 实体框架:“where 子句中的未知列”

    我正在开发一个应用程序 该应用程序将概述当天在剧院放映的电影 我得到以下异常 where 子句 中的未知列 Extent2 Movie ID 这是抛出异常的地方 额外的变量 movies2 这只是我为调试所做的事情 public Actio
  • 在R中使用ccf进行互相关[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在 R 中使用 ccf 来计算两
  • 如何将单个文件恢复到以前的版本? [复制]

    这个问题在这里已经有答案了 有没有办法对文件进行不同的提交 假设我修改了一个文件 5 次 在提交并推送到存储库后我想返回更改 2 次 根据我的理解 唯一的方法是保留许多分支 我说得对吗 如果我是对的 几天之内我将拥有数百个分支机构 所以我可
  • Asterisk AGI - 使用 php agi 发起呼叫

    有人知道我们如何使用 PHP AGI 脚本发起外部号码呼叫吗 您有两种可能的选择 一种是使用 Originate 命令 看http www voip info org wiki view Asterisk manager 示例 Origin
  • 使用 Jmeter 桌面应用程序作为 Web 应用程序

    正如我们所知 JMeter 是基于桌面的应用程序 它将在我们的操作系统中启动 我们可以使用它来进行性能测试 但如果我想将它用作 Web 应用程序而不是桌面应用程序 该怎么办 如何使用 Jmeter 桌面应用程序作为 Web 应用程序并将其公
  • Symfony 4 webpack + encore 处理模板中的图像

    使用 Symfony 4 和 Webpack Encore Yarn 我想在我的模板中处理图像 但我并不真正知道如何实现这一点 我把我的形象放在我的 assets img logo png文件夹 然后在我的webpack config js
  • 在循环中包装每 3 个元素会留下一个空包装器

    我将循环中的每 3 个元素包装在包装器 div 中 如下所示 query array post type gt post i 1 posts new WP Query query out div class wrapper if posts
  • Matplotlib:将右轴的原点与特定的左轴值对齐

    在 Matplotlib 中绘制多个 y 轴时 有没有办法指定如何将右轴的原点 和 或一些 ytick 标签 与左轴的特定值对齐 这是我的问题 我想绘制两组数据以及它们的差异 基本上 我试图重现这种图 http jp physoc org
  • 如何在Webview中显示android警报对话框?

    我正在使用 webview 开发一个应用程序 但我不知道如何启用 JavaScript 在 webview 中显示警报对话框 我曾经尝试过这个 但它对我不起作用 首先 我制作了 webview 和 websettings 对象 然后设置以下
  • tidyverse - 按其他列分组的多个列之间的相关性

    我想获得 tidyverse 中多个变量的相关矩阵 但是 我想按另一列进行分组 例如 假设我有一个数据框df有柱子year我想看到之间的相关性V1 V2 V3by year year V1 V2 V3 misc var 2018 5 6 5
  • 用 ggplot 标记/注释极值的最简洁方法?

    我想使用 ggplot2 注释所有大于 y 阈值的 y 值 当你plot lm y x 使用基础包 自动弹出的第二个图是Residuals vs Fitted 第三个是qqplot 第四个是Scale location 其中每一个都会通过将
  • 如何在 Visual Studio 2019 中启用 C++98 编译?

    如何在 Visual Studio 2019 中启用 C 98 编译 因为我要编译一个旧项目 而旧项目需要c 98环境 简而言之 编译器不支持 C 98 C 03 或 C 11 的标准切换 Link https learn microsof
  • dotnet pack 项目参考

    我非常喜欢将功能分离到几个程序集中 例如数据提供程序的外观 数据提供程序的合同以及数据提供程序实现本身 在我看来 它使得对单个组件进行单元测试变得很容易功能丰富 并且将来很容易更换一件事 在我的示例中 它使数据提供者很容易更换 如果我创建一
  • 即使文件扩展名已更改,如何识别文件类型?

    文件按文件扩展名分类 所以我的问题是 即使文件扩展名已更改 如何识别文件类型 例如 我有一个名为myVideo mp4 我已将其更改为myVideo txt 因此 如果我双击它 首选文本编辑器将打开该文件 但不会打开确切的内容 但是 如果我