gpt4 book ai didi

java - 如何检查文件是否为二进制文件?

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

我编写了以下方法来查看特定文件是否仅包含 ASCII 文本字符或除此之外还包含控制字符。您能否浏览一下这段代码,提出改进建议并指出疏忽?

逻辑如下:“如果文件的前 500 个字节包含 5 个或更多控制字符 - 将其报告为二进制文件”

谢谢。

public boolean isAsciiText(String fileName) throws IOException {

InputStream in = new FileInputStream(fileName);
byte[] bytes = new byte[500];

in.read(bytes, 0, bytes.length);
int x = 0;
short bin = 0;

for (byte thisByte : bytes) {
char it = (char) thisByte;
if (!Character.isWhitespace(it) && Character.isISOControl(it)) {

bin++;
}
if (bin >= 5) {
return false;
}
x++;
}
in.close();
return true;
}

最佳答案

由于您将此类称为“isASCIIText”,因此您确切地知道自己在寻找什么。换句话说,它不是“isTextInCurrentLocaleEncoding”。因此,您可以更准确地使用:

if (thisByte < 32 || thisByte > 127) bin++;

edit, a long time later — 在评论中指出,这个简单的检查会被一个以大量换行符开头的文本文件绊倒。使用“ok”字节表可能会更好,并包含可打印字符(包括回车符、换行符和制表符,可能还有换页符,但我认为很多现代文档都不会使用这些字符),然后检查 table 。

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

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