*
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
#include "WinFileStream.h"
|
||||
|
||||
namespace LifeCore
|
||||
{
|
||||
WinFileStream::WinFileStream(const String& path)
|
||||
:hFile(0)
|
||||
{
|
||||
hFile = CreateFileA(path.c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
}
|
||||
WinFileStream::~WinFileStream()
|
||||
{
|
||||
if(hFile)
|
||||
{
|
||||
CloseHandle(hFile);
|
||||
}
|
||||
}
|
||||
void WinFileStream::Close()
|
||||
{
|
||||
CloseHandle(hFile);
|
||||
hFile = NULL;
|
||||
}
|
||||
size_t WinFileStream::Read(void* pBuffer, size_t countBytes)
|
||||
{
|
||||
unsigned long countRead = 0;
|
||||
ReadFile(hFile, pBuffer, countBytes, &countRead, NULL);
|
||||
return (int)countRead;
|
||||
}
|
||||
size_t WinFileStream::Write(const void* pBuffer, size_t countBytes)
|
||||
{
|
||||
unsigned long countWrite = 0;
|
||||
WriteFile(hFile, pBuffer, countBytes, &countWrite, NULL);
|
||||
return (int)countWrite;
|
||||
}
|
||||
void WinFileStream::Seek(int position)
|
||||
{
|
||||
SetFilePointer(hFile, position, NULL, SEEK_SET);
|
||||
}
|
||||
size_t WinFileStream::Tell()
|
||||
{
|
||||
return SetFilePointer(hFile, 0, NULL, SEEK_CUR);
|
||||
}
|
||||
size_t WinFileStream::Length()
|
||||
{
|
||||
int pos = Tell();
|
||||
int length = SetFilePointer(hFile, 0, NULL, SEEK_END);
|
||||
SetFilePointer(hFile, pos, NULL, SEEK_SET);
|
||||
return length;
|
||||
}
|
||||
bool WinFileStream::CanRead()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
bool WinFileStream::CanWrite()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user