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
相关资源:判断文件是文本文件还是二进制文件