Files
2025-05-13 02:46:21 +03:00

57 lines
1.2 KiB
C++

#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;
}
}