博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows文件操作基础代码
阅读量:4512 次
发布时间:2019-06-08

本文共 1664 字,大约阅读时间需要 5 分钟。

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

转载于:https://www.cnblogs.com/fanzhidongyzby/archive/2012/07/31/2617239.html

你可能感兴趣的文章
Android 数据库框架总结,总有一个适合你!
查看>>
Android 设置 横屏 竖屏
查看>>
Spring MVC兑现QQ第三方登录
查看>>
R类型5 R语言 数据帧
查看>>
百度云推送教程
查看>>
简单几步轻松实现在微信中直接下载APK
查看>>
python基础(六)
查看>>
接口的定义与使用
查看>>
Censtos Hadoop安装
查看>>
【模板】线段树 1(洛谷_3372)
查看>>
后台调用前台js
查看>>
解析ArrayList与LinkedList的遍历方法
查看>>
HTML/CSS权值继承
查看>>
数据基础
查看>>
Js函数
查看>>
C++多重继承问题
查看>>
SMINT:单页网站的免費jQuery插件
查看>>
[转]Objective-c中@class和#import
查看>>
Java 接口学习
查看>>
Oracle 统计信息窗口的相关知识
查看>>