📄 file.cpp
字号:
/************************************************************************
模快名: moxu 公共类库
功能: 文件读写
完成日期: 2007-10-20
作者: 许 培 Xu Pei(Email/MSN: peimoxu@163.com)
本代码可以自由使用,但因使用本代码造成的后果,本人不承担任何责任
************************************************************************/
#include "StdAfx.h"
#include "File.h"
namespace moxu
{
File::File() :
m_handle(INVALID_HANDLE_VALUE)
{
}
File::~File()
{
Close();
}
bool File::Create(const TString& fileName)
{
Close();
m_handle = CreateFile(
fileName.c_str(),
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
return (m_handle == INVALID_HANDLE_VALUE) ? false : true;
}
bool File::Open(const TString& fileName, int flag)
{
Close();
m_handle = CreateFile(
fileName.c_str(),
flag,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
return (m_handle == INVALID_HANDLE_VALUE) ? false : true;
}
void File::Close()
{
if(m_handle != INVALID_HANDLE_VALUE)
{
CloseHandle(m_handle);
m_handle = INVALID_HANDLE_VALUE;
}
}
unsigned int File::Read(LPVOID buffer, DWORD size)
{
DWORD count;
if(m_handle == INVALID_HANDLE_VALUE)
return 0;
if(!ReadFile(m_handle, buffer, size, &count, NULL))
return 0;
return count;
}
unsigned int File::Write(LPCVOID buffer, DWORD size)
{
DWORD count;
if(m_handle == INVALID_HANDLE_VALUE)
return 0;
if(!WriteFile(m_handle, buffer, size, &count, NULL))
return 0;
return count;
}
UINT64 File::GetPointer()
{
if(m_handle == INVALID_HANDLE_VALUE)
return 0;
LARGE_INTEGER llPos = {0, 0};
llPos.LowPart = SetFilePointer(m_handle, llPos.LowPart, &llPos.HighPart, FILE_CURRENT);
return llPos.QuadPart;
}
bool File::SetPointer(UINT64 pos)
{
if(m_handle == INVALID_HANDLE_VALUE)
return false;
LARGE_INTEGER llPos;
llPos.QuadPart = pos;
llPos.LowPart = SetFilePointer(m_handle, llPos.LowPart, &llPos.HighPart, FILE_BEGIN);
return (UINT64)llPos.QuadPart == pos ? true : false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -