微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 如何检查文件是否是纯文本?

在我的程序中,用户可以加载带有链接文件(它是一个webcrawler),但是我需要验证用户选择的文件是纯文本还是其他东西(只允许纯文本).

有可能这样做吗?如果有用,我正在使用JFileChooser打开文件.

编辑:

用户期望的是:包含URL的文本文件.

我想避免的:用户从MS Word加载MP3文件或文档(示例).

解决方法

一个文件只是一系列字节,没有进一步的信息,你无法分辨这些字节是否应该是某些字符串编码中的代码点(比如ASCII或UTF-8或ANSI-something)或其他东西.您将不得不求助于启发式,例如:

>尝试使用许多已知编码解析文件,并查看解析是否成功.如果是的话,你可能有一个文本文件.
>如果您只希望使用西方语言的文本文件,您可以假设大多数字符位于ASCII范围(0..127),更具体地说,(33..127)加上空格(制表符,换行符,回车符,空间).计算每个不同字节值的出现次数,如果文档的压倒性部分位于“典型的西方字符”集中,则通常可以安全地假设它是文本文件.
>扩展以前的方法;以您期望的语言对足够大量的文本进行采样,并构建字符频率配置文件.要检查文件,请将文件的字符频率配置文件与测试数据进行比较,看它是否足够接近.

但这是另一种解决方案:只需将您收到的所有内容视为文本,在需要时应用必要的转换(例如,在发送到Web浏览器时进行HTML编码).只要您阻止将文件解释为二进制数据(例如用户双击该文件),您将产生的最糟糕的数据就是乱码数据.

原文地址:https://www.jb51.cc/java/121351.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐