判断文件是二进制文件还是文本文件的函数(VC,Delphi)

mac2022-06-30  71

VC实现

===============================================================#include "sys/stat.h"

bool IsTextFile(const char * strFileName){ if(strFileName==NULL) return false; struct stat f_stat;  if(stat(strFileName,&f_stat)==-1) {   return false; }  long lngFilesize=0; lngFilesize=(long)f_stat.st_size; if(lngFilesize<=0) return false; FILE *ft=fopen(strFileName, "rb"); if(ft==NULL) {  return false; } char btData[1]; long lngReadPos; long lngMaxRead=40960; if(lngMaxRead>lngFilesize) lngMaxRead=lngFilesize; for(lngReadPos=1;lngReadPos<=lngMaxRead;lngReadPos++) {  fread(&btData,1,1,ft);  if(btData[0]=='/0')  {   fclose(ft);   return false;   } } fclose(ft); return true;}

//调用:void CIsTextFileProjectDlg::OnClick() { if(IsTextFile("c://新建.txt")==false) {  AfxMessageBox("新建.txt 二进制文件"); } else {  AfxMessageBox("新建.txt 文本文件"); }}

 

===============================================================Delphi实现===============================================================function IsTextFile(const sFile: TFileName): boolean;var tfsFile:TFileStream; lngReadPos:Longint; lngMaxRead:Longint; btData:Byte;begin result:=true; tfsFile:=TFileStream.Create(sFile,fmOpenRead or fmShareDenyNone); try   lngMaxRead:=40960;   if lngMaxRead>tfsFile.Size then lngMaxRead:=tfsFile.Size;   for lngReadPos:=1 to lngMaxRead do       begin          tfsFile.Read(btData,1);          if btData=0 then             begin                result:=false;             end       end; finally   FreeAndNil(tfsFile); end;end;

//调用:procedure TForm1.Button1Click(Sender: TObject);begin   if OpenDialog1.Execute then      begin         if IsTextFile(OpenDialog1.FileName) then            showmessage('是文本文件文件')         else            showmessage('是二进制文件')      end;end;

 

 

转载于:https://www.cnblogs.com/forads/archive/2009/04/12/2161174.html

相关资源:判断文件是文本文件还是二进制文件
最新回复(0)