📄 fileutils.cpp
字号:
/************************************************************************/
/* Bluetooth Test The.Berlin.Factor April 2003 */
/************************************************************************/
#include <EikApp.h>
#include <EikAppUi.h>
#include <EikEnv.h>
#include <S32File.h>
#include "util/FileUtils.h"
void NFileUtils::MkDirL( const TDesC & aFileName ) {
RFs fs;
User::LeaveIfError( fs.Connect( ) );
CleanupClosePushL( fs );
User::LeaveIfError( fs.MkDir( aFileName ) );
CleanupStack::PopAndDestroy( &fs );
}
void NFileUtils::MkDirL( const TDesC & aFileName, TBool aIgnoreExisting ) {
TRAPD( error, MkDirL( aFileName ) );
if ( error == KErrNone )
return;
if ( error == KErrAlreadyExists && aIgnoreExisting )
return;
User::Leave( error );
}
void NFileUtils::DeleteFileL( const TDesC & aFileName ) {
RFs fs;
User::LeaveIfError( fs.Connect( ) );
CleanupClosePushL( fs );
User::LeaveIfError( fs.Delete( aFileName ) );
CleanupStack::PopAndDestroy( &fs );
}
void NFileUtils::SaveFileL( const TDesC & aFileName, const TDesC8 & aDataBuffer ) {
RFs fs;
User::LeaveIfError( fs.Connect( ) );
CleanupClosePushL( fs );
RFileBuf fileBuf;
if ( fileBuf.Open( fs, aFileName, EFileWrite ) != KErrNone )
User::LeaveIfError( fileBuf.Replace( fs, aFileName, EFileWrite ) );
CleanupClosePushL( fileBuf );
fileBuf.SetSizeL( 0 );
if ( aDataBuffer.Length( ) > 0 )
fileBuf.WriteL( aDataBuffer.Ptr( ), aDataBuffer.Length( ) );
CleanupStack::PopAndDestroy( &fileBuf );
CleanupStack::PopAndDestroy( &fs );
}
void NFileUtils::SaveAppFileL( const TDesC & aRelativeFileName, const TDesC8 & aDataBuffer ) {
TParsePtrC parse( CEikonEnv::Static( )->EikAppUi( )->Application( )->AppFullName( ) );
TPtrC appPath = parse.DriveAndPath( );
TFileName name = appPath;
name.Append( aRelativeFileName );
SaveFileL( name, aDataBuffer );
}
HBufC8 * NFileUtils::LoadFileL( const TDesC16 & aInputFileName ) {
RFs fs;
User::LeaveIfError( fs.Connect( ) );
CleanupClosePushL( fs );
// Open the data file
RFile file;
User::LeaveIfError( file.Open( fs, aInputFileName, EFileShareReadersOnly ) );
CleanupClosePushL( file );
// Get its size
TInt size = 0;
User::LeaveIfError( file.Size( size ) );
// Allocate memory for the file contents
HBufC8 * data = HBufC8::NewLC( size );
TPtr8 ptr( data->Des( ) );
User::LeaveIfError( file.Read( ptr ) );
CleanupStack::Pop( data );
CleanupStack::PopAndDestroy( &file );
CleanupStack::PopAndDestroy( &fs );
return( data );
}
HBufC8 * NFileUtils::LoadFileL( const TDesC8 & aInputFileName ) {
// TODO: Evtl NStringUtils an den Start bringen? Oder evtl einen
// TDesFakeC16 an den Start bringen der auf einem TDesC8 abgeht?
TBuf< 256 > temp;
temp.Copy( aInputFileName );
return( LoadFileL( temp ) );
}
HBufC8 * NFileUtils::LoadAppFileL( const TDesC16 & aRelativeFileName ) {
TParsePtrC parse( CEikonEnv::Static( )->EikAppUi( )->Application( )->AppFullName( ) );
TPtrC appPath = parse.DriveAndPath( );
TFileName name = appPath;
name.Append( aRelativeFileName );
HBufC8 * data = LoadFileL( name );
return( data );
}
HBufC8 * NFileUtils::LoadAppFileL( const TDesC8 & aRelativeFileName ) {
// TODO: Evtl NStringUtils an den Start bringen? Oder evtl einen
// TDesFakeC16 an den Start bringen der auf einem TDesC8 abgeht?
TBuf< 256 > temp;
temp.Copy( aRelativeFileName );
return( LoadAppFileL( temp ) );
}
TInt NFileUtils::GetFileSizeL( const TDesC & aFileName ) {
RFs fs;
User::LeaveIfError( fs.Connect( ) );
CleanupClosePushL( fs );
RFile file;
User::LeaveIfError( file.Open( fs, aFileName, EFileRead ) );
CleanupClosePushL( file );
TInt fileSize = 0;
User::LeaveIfError( file.Size( fileSize ) );
CleanupStack::PopAndDestroy( &file );
CleanupStack::PopAndDestroy( &fs );
return( fileSize );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -