gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:03:49 26 4
gpt4 key购买 nike

在我的程序中,用户可以加载带有链接的文件(这是一个网络爬虫),但我需要验证用户选择的文件是纯文本还是其他内容(只允许纯文本)。

这有可能吗?如果它有用,我正在使用 JFileChooser 打开文件。

编辑:

对用户的期望:包含 URL 的文本文件。

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

最佳答案

文件只是一系列字节,如果没有更多信息,您无法判断这些字节是否应该是某种字符串编码(例如,ASCII 或 UTF-8 或 ANSI 之类)或其他东西的代码点。您将不得不求助于启发式方法,例如:

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

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

关于java - 如何检查文件是否为纯文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6559127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com