📄 neofile.cpp
字号:
#include "NeoFile.h"
CNeoFILE* CNeoFILE::NewL()
{
CNeoFILE* self = CNeoFILE::NewLC();
CleanupStack::Pop(self);
return self;
}
CNeoFILE* CNeoFILE::NewLC()
{
CNeoFILE* self = new (ELeave) CNeoFILE;
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CNeoFILE::CNeoFILE()
{
}
CNeoFILE::~CNeoFILE()
{
FClose();
}
void CNeoFILE::ConstructL()
{
iFileOpened = EFalse;
}
void CNeoFILE::FReplace(char* aFileName, TInt aMode)
{
FClose();
TPtr8 tFileName8((unsigned char*)aFileName, strlen(aFileName), strlen(aFileName));
HBufC* tFileName = CnvUtfConverter::ConvertToUnicodeFromUtf8L(tFileName8);
RFile file;
file.Replace(CCoeEnv::Static()->FsSession(), tFileName->Des(), EFileWrite);
file.Close();
iFileRead.Open(CCoeEnv::Static()->FsSession(), tFileName->Des(), EFileRead | EFileStream | EFileShareAny);
iFileOpened = ETrue;
iFileWrite.Open(CCoeEnv::Static()->FsSession(), tFileName->Des(), EFileWrite | EFileStream | EFileShareAny);
delete tFileName;
}
void CNeoFILE::FOpen(char* aFileName, TInt aMode)
{
FClose();
TPtr8 tFileName8((unsigned char*)aFileName, strlen(aFileName), strlen(aFileName));
HBufC* tFileName = CnvUtfConverter::ConvertToUnicodeFromUtf8L(tFileName8);
iFileRead.Open(CCoeEnv::Static()->FsSession(), tFileName->Des(), EFileRead | EFileStream | EFileShareAny);
iFileOpened = ETrue;
iFileWrite.Open(CCoeEnv::Static()->FsSession(), tFileName->Des(), EFileWrite | EFileStream | EFileShareAny);
iFileWrite.Sink()->SeekL(MStreamBuf::EWrite, EStreamEnd, 0);
delete tFileName;
}
void CNeoFILE::FWrite(char* aData, int aSize)
{
if (!iFileOpened)
return;
iFileWrite.Sink()->WriteL(aData, aSize);
}
int CNeoFILE::FRead(char* aData, int aSize)
{
if (!iFileOpened)
return 0;
if (aSize == 0)
return 0;
int retVal = KErrNone;
TRAPD(err, retVal = iFileRead.Source()->ReadL(aData, aSize));
if (err == KErrNone)
return retVal;
else
return 0;
}
int CNeoFILE::FTell()
{
if (!iFileOpened)
return 0;
int retVal = KErrNone;
TRAPD(err, retVal = iFileRead.Source()->TellL(MStreamBuf::ERead).Offset());
if (err == KErrNone)
return retVal;
else
return 0;
}
void CNeoFILE::FSeek(int aPos, int aType)
{
if (!iFileOpened)
return;
if (aType == SEEK_END)
iFileRead.Source()->SeekL(MStreamBuf::ERead, EStreamEnd, aPos);
else if (aType == SEEK_SET)
iFileRead.Source()->SeekL(MStreamBuf::ERead, EStreamBeginning, aPos);
else
iFileRead.Source()->SeekL(MStreamBuf::ERead, EStreamMark, aPos);
}
int CNeoFILE::FSize()
{
if (!iFileOpened)
return 0;
return iFileRead.Source()->SizeL();
}
bool CNeoFILE::FEof()
{
return FTell() == FSize();
}
void CNeoFILE::FClose()
{
if (iFileOpened)
{
iFileRead.Close();
iFileWrite.Close();
}
iFileOpened = EFalse;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -