Windows檔案操作基礎代碼
Windows下對檔案進行操作使用的一段基礎代碼File.h,首先是File類定義:
#pragma once
#include<Windows.h>
#include<assert.h>
class File
{
HANDLE hFile;//檔案控制代碼
public:
void open(LPCWSTR fileName);
int read(char*data,int len);
void movefp(long disp,int type);
int write(char*data,int len);
void close();
static void copy(LPCWSTR src,LPCWSTR des);
static void move(LPCWSTR src,LPCWSTR des);
static void del(LPCWSTR name);
};
File類的實現如下:
1.開啟檔案:這裡檔案開啟檔案為讀寫、檔案不存在則建立。
void File::open(LPCWSTR fileName)
{
//使用CreatFile以讀寫方式開啟一個檔案
hFile=CreateFile(fileName,//檔案名稱
GENERIC_WRITE|GENERIC_READ,//讀寫權限
FILE_SHARE_READ|FILE_SHARE_WRITE//共用讀寫權限
,NULL//安全特性
,OPEN_ALWAYS//CREATE_NEW-存在出錯,CREATE_ALWAYS-改寫存在檔案,OPEN_EXISTING-不存在出錯,OPEN_ALWAYS-不存在建立
//TRUNCATE_EXISTING-將現有檔案長度縮短為0
,FILE_ATTRIBUTE_NORMAL//FILE_ATTRIBUTE^X,X_ARCHIVE-標記歸檔,X_NORMAL-預設,X_HIDDEN-隱藏,X_READONLY-唯讀,X_SYSTEM-系統
,NULL);
assert(hFile!=INVALID_HANDLE_VALUE);
}
2.關閉檔案:
void File::close()
{
CloseHandle(hFile);
}
3.讀檔案:
int File::read(char*data,int len)
{
DWORD dwWrite;
bool rslt=ReadFile(hFile,data,len,&dwWrite,NULL);
assert(rslt);
return dwWrite;
}
4.寫檔案:
int File::write(char*data,int len)
{
DWORD dwWrite;
bool rslt=WriteFile(hFile,data,len,&dwWrite,NULL);
assert(rslt);
return dwWrite;
}
5.移動檔案指標:
void File::movefp(long disp,int type)
{
SetFilePointer(hFile,disp,NULL,type);
}
6.其他檔案操作API,複製、移動、刪除(可以擴充):
void File::copy(LPCWSTR src,LPCWSTR des)
{
assert(CopyFile(src,des,true));
}
void File::move(LPCWSTR src,LPCWSTR des)
{
assert(MoveFile(src,des));
}
void File::del(LPCWSTR name)
{
assert(DeleteFile(name));
}