【原创】如何判断文件为文本文件还是二进制文件

最近写一个程序用于读取STL文件(一种三维文件格式),并显示出来。STL文件存储格式有一个特殊点就是分两种类型,一种是ASCII文件类型,一种是二进制文件类型。ASCII文件类型的,里面就是一些字符串,描述了三维三角面片的坐标和法向量。二进制文件和ASCII基本一致,不过是按照二进制的方式按位来读取,并且有文件头的描述。

 

于是我遇到一个难题,就是如何判断STL文件是字符串格式的还是二进制格式的。

 

在解决该问题的过程中,我跳出该问题,上升到所有文件存储类型的判断。

严格的说,所有文件在磁盘上的存储都是二进制的,这里说说的二进制的判断,我认为就是判断该文件是否为可理解的。一串字符是可理解的,但一串类似0101001的代码是无法理解的(再简单点说:用记事本打开你能看懂的)。

 

我再在网上查阅了一下,发现了好几种解决方法,现在罗列一下,各位可以根据不同情况选择使用:

1、判断字符范围。

该方式主要是针对英文字符的,如果文件中有中文字符就会判断失败。比如:

 

   

该方式针对256以下的字符问题都不大,一旦遇到双字节中文就会出现c为负数的情况,导致判

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值