symbian 从文件读出对应mime类型,不需要手动判断类型

The following function shows how to determine file types.

void GetFileType(const TDesC& aFileName, TDes& aFileType)
{
TEntry FileEntry;
 
if (CCoeEnv::Static()->FsSession().Entry(aFileName,FileEntry) == KErrNone)
{
TBuf8<255> FileBuffer;
 
if(!FileEntry.IsDir())
{
TInt FileSize = FileEntry.iSize;
 
if(FileSize > 255)
{
FileSize = 255;
}
 
if(CCoeEnv::Static()->FsSession().ReadFileSection
(aFileName,0,FileBuffer,FileSize) == KErrNone)
{
RApaLsSession RSession;
if(RSession.Connect() == KErrNone)
{
TDataRecognitionResult FileDataType;
 
RSession.RecognizeData(aFileName,FileBuffer,*&FileDataType);
if(FileDataType.iConfidence > aResult.iConfidence)
{
aFileType.Copy(FileDataType.iDataType.Des());
}
 
RSession.Close();
}
}
}
}
}

If you don't have access to the file itself (for example because of the restrictions posed by the platform security) you can use this function:

void GetFileType(RFile& aFile, TDes& aFileType)
{
TInt FileSize(0);
TFileName RFileName;
 
if(aFile.Size(FileSize)== KErrNone && FullName(RFileName) == KErrNone)
{
TBuf8<255> FileBuffer;
 
if(FileSize > 255)
{
FileSize = 255;
}
 
if(aFile.Read(FileBuffer,FileSize) == KErrNone)
{
RApaLsSession RSession;
if(RSession.Connect() == KErrNone)
{
TDataRecognitionResult FileDataType;
 
RSession.RecognizeData(RFileName,FileBuffer,*&FileDataType);
if(FileDataType.iConfidence > aResult.iConfidence)
{
aFileType.Copy(FileDataType.iDataType.Des());
}
 
RSession.Close();
}
}
}
}

In both cases the type of the file is returned in the aFileName argument variable as standard MIME type (for example image/gif for gif images etc) and in case the file is not recognized the aFileName will not be modified.

 

==============================================================================

也可以用GetMimeTypeFileL代替

TBuf8<255> ImageType;

CImageDecoder::GetMimeTypeFileL(CCoeEnv::Static()->FsSession(),aFileName, ImageType);

 

==============================================================================

TDataRecognitionResult recResult;
        RFile file;
        file.Open(CEikonEnv::Static()->FsSession(),aCoverFullPath,EFileRead);
        iALSession.RecognizeData(file,recResult);//iALSession  is RApaLsSession
        file.Close();
        TPtrC8 ptr(recResult.iDataType.Des8());

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值