判断文件为文本文件还是二进制文件

9 篇文章 3 订阅

1. Git 判断方式

文本文件不会存在某个字节的值为 0 的情况。

判断逻辑:

  1. 获取文件前 8000 个字节数据
  2. 依次这 8000 个字符中是否有字符值为 0。如果存在 0,表示文件为二进制文件;反之,为文本文件。
#define FIRST_FEW_BYTES 8000
int buffer_is_binary(const char *ptr, unsigned long size)
{
	if (FIRST_FEW_BYTES < size)
		size = FIRST_FEW_BYTES;
	return !!memchr(ptr, 0, size);
}

2. Linux 通过 file 命令判断

file 命令功能非常强大,可以显示出每个文件的具体类型。如果只是简单的区分文本文件和二进制文件,可以判断文件是否为 ASCII text,如果是,则为文本文件;反之,为二进制文件。

2.1. 文本文件

[root@]# file 1.txt 
1.txt : C source, ASCII text

2.2. 可执行文件

[root@]# file time
time: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped

2.3. 视频

[root@]# file 11.avi 
11.avi: RIFF (little-endian) data, AVI, 640 x 640, 30.00 fps, video: FFMpeg MPEG-4, audio: MPEG-1 Layer 3 (mono, 44100 Hz)

2.4. 图片

[root@]# file 4345559.png
4345559.png: PNG image data, 888 x 1038, 8-bit colormap, non-interlaced
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值