⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 file.cpp

📁 这是本人在工作中积累的VC++类库
💻 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 + -