java获取文件的mime,java获取文件是不是文本,java获取文件类型(非后缀方式)
发布日期:2021-06-29 04:43:28 浏览次数:4 分类:技术文章

本文共 1532 字,大约阅读时间需要 5 分钟。

如标题:

  为什么要判断文件是不是文本?我来给你大个比方,你有个上传文件的接口,需要上传文本文件,针对文本文件进行扫描处理,文本文件在linux中是可以没有后缀的,然而客户或者用户才不管你这个接口的要求,一顿乱传,导致你各种解析失败,报各种错误,到最后你才发现只有测试是真爱,你说让他传文本他就真的只传文本文件,所以我们需要通过技术手段来甄别用户或者客户上传的文件是不是文本文件。

怎么判断?:

  可通过获取文件MIME来实现,什么是mime?百度上难懂拗口的解释我就不说了,就是Content-Type,搞过web开发的同学们都知道的,mime的大全: 

实现:

  就是现在,让我们来整起来,我们使用的是tika:

  1:导入maven依赖

org.apache.tika
tika-core
1.24.1

  2:代码:

public static String getFileMime(InputStream inputStream,String fileName) throws TikaException, SAXException, IOException {        ParseContext parseContext = new ParseContext();        BodyContentHandler contenthandler = new BodyContentHandler();        Metadata metadata = new Metadata();        if(StringUtils.isNotBlank(fileName)){            metadata.set(Metadata.RESOURCE_NAME_KEY, fileName);        }        Parser parser = new AutoDetectParser();        parser.parse(inputStream,contenthandler, metadata,parseContext);        String fileMime = metadata.get(Metadata.CONTENT_TYPE);        return fileMime;    }    public static void main(String[] args) {        File file = new File("E:\\新建文本文档.txt");        try {            InputStream is = new FileInputStream(file);            String mime = getFileMime(is, file.getName());            System.out.println(mime);        } catch (ZeroByteFileException e){            System.out.println("文件是空的");            e.printStackTrace();        } catch (Exception e) {            e.printStackTrace();        }    }

  结果:

所以我们只需要判断是不是text前缀就行啦,so ez,too simple....

转载地址:https://blog.csdn.net/zhanghaishan/article/details/107151445 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:冰蝎V3.0Beta9-fixed客户端JAVA源码与配套服务端
下一篇:搭建docker私有镜像仓库(帐号密码登录)

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月03日 20时08分52秒