我正在尝试检查给定的文件是> url
[1] "https://www.amazon.com/s/ref=sr_pg_1?rh=n%3A172282%2Cn%3A%21493964%2Cn%3A502394%2Cn%3A281052%2Cn%3A12556502011%2Cn%3A3017941&page=1&ie=UTF8"
。
我参考下面给出的链接找到解决方案,
How can I check if file is text (ASCII) or binary in C
但是给定的解决方案工作不正常,如果我将binary or not
文件作为参数传递,它不起作用,它会输出错误的结果。
我可以传递的可能文件作为参数:
a.out
filename.c
FILENAME.TXT
filename.pl
filename.php
所以我需要知道是否有任何功能或方法来解决问题?
...谢谢
注意:[如有疑问,请在投票前问我]
答案 0 :(得分:2)
您需要清楚地定义二进制文件的内容,然后根据它进行检查。
如果您只是想根据文件扩展名进行过滤,那么请创建一个您认为是二进制文件的列表,以及一个您不考虑二进制文件的列表,然后根据它进行检查。
如果您有已知格式的列表而不是文件扩展名,请尝试以格式解析文件,如果它没有解析/解析结果没有意义,那么它是一个二进制文件(为了你的目的)。
答案 1 :(得分:1)
根据您的操作系统,二进制文件以标头开头,指定它们是可执行文件并包含有关它们的若干信息(体系结构,大小,字节顺序等)。因此,通过尝试解析此标头,您应该知道文件是否为二进制文件。如果你在mac上,检查Mach-O文件格式,如果你在Linux上,它应该是ELF格式。但要注意,它有很多文档。