zoukankan      html  css  js  c++  java
  • VC++-文件的创建与打开

    • 版本

    vs2012

    • 实例说明

    1.使用API函数CreateFile创建一个文件,通过取值CREATE_ALWAYS设置文件存在时将进行覆盖。

    2.通过CFlie类创建一个文件,通过CFile的构造函数指定一个文件路径,只要文件不存在就新建一个文件。

    界面

     

    • 关键技术

    本实例的实现主要使用CreateFile函数和CFile类构造函数

    (1)CreateFile函数基本格式如下:

    CreateFile(
        _In_ LPCSTR lpFileName,
        _In_ DWORD dwDesiredAccess,
        _In_ DWORD dwShareMode,
        _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
        _In_ DWORD dwCreationDisposition,
        _In_ DWORD dwFlagsAndAttributes,
        _In_opt_ HANDLE hTemplateFile
        );

    CreateFile函数的参数说明

    参数 说明
    lpFileName 文件名
    dwDesiredAccess 如果为GENERIC_READ,表示允许对设备进行读访问;如果为GENERIC_WRITE,表示允许对设备进行读写访问(可组合使用);如果为0,表示只允许获取与一个设备有关的信息
    dwShareMode 0表示不共享;FILE_SHARE_READ和/或FILE_SHARE_WRITE表示允许对文件进行共享访问
    lpSecurityAttributes SECURITY_ATTRIBUTES结构的指针,定义了文件的安全特性
    dwCreationDisposition 可选值如图所示
    dwFlagsAndAttributes 其值如图所示
    hTemplateFile 不为0,则指定一个文件句柄。新文件将从这个文件中复制扩展属性

    参数dwCreationDisposition的取值

    取值 说明
    CREATE_NEW 创建文件,如文件存在则会出错
    CREATE_ALWAYS 创建文件,会改写前一个文件
    OPEN_EXISTING 文件必须已经存在,由设备提出要求
    OPEN_ALWAYS 如文件不存在则创建
    TRUNCATE_EXISTING 将现有文件缩短为零长度

    参数dwFlagsAndAttributes的取值

    取值 说明
    FILE_ATTRIBUTE_ARCHIVE 标记归档属性
    FILE_ATTRIBUTE_COMPRESSED 将文件标记为已压缩,或者标记为文件在目录中的默认压缩方式
    FILE_ATTRIBUTE_NORMAL 默认属性
    FILE_ATTRIBUTE_HIDDEN 隐藏文件或者目录
    FILE_ATTRIBUTE_READONLY 文件为只读
    FILE_ATTRIBUTE_SYSTEM 文件为系统文件
    FILE_FLAG_WRITE_THROUGH 操作系统不得推迟对文件的写操作
    FILE_FLAG_OVERLAPPED 允许对文件进行重叠操作
    FILE_FLAG_NO_BUFFERING 禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块
    FILE_FLAG_RANDOM_ACCESS 针对随机访问对文件缓冲进行优化
    FILE_FLAG_SEQUENTIAL_SCAN 针对连续访问对文件缓冲进行优化
    FILE_FLAG_DELETE_ON_CLOSE 关闭上一次打开的句柄后,将文件删除。特别适合临时文件

     

    CFlie类构造函数基本格式如下

    CFile(LPCTSTR lpszFileName, UINT nOpenFlags);

    参数说明:

    lpszFileName:文件路径。

    nOpenFlags:打开方式。

     Microsoft 基础类文件类的基类。https://docs.microsoft.com/zh-cn/cpp/mfc/reference/cfile-class?view=msvc-160

    • 设计过程

    (1)新建一个基于对话框的应用程序。

    (2)向窗体中添加两个按钮控件,执行创建文件的函数。

    (3)主要代码如下:

    void CDemoDlg::OnBnClickedButton1()
    {
        // TODO: 在此添加控件通知处理程序代码
    
        //使用CreateFile函数创建
        HANDLE fHandle;
        fHandle = CreateFile("D:\1\1.txt", 0, FILE_SHARE_READ, NULL, CREATE_ALWAYS, 0, NULL);
        if (fHandle == INVALID_HANDLE_VALUE)
        {
            MessageBox("创建失败");
        }
    
    }
    void CDemoDlg::OnBnClickedButton2()
    {
        // TODO: 在此添加控件通知处理程序代码
    
        //使用CFile类构造函数创建
        CFile file("D:\1\2.txt", CFile::modeCreate);
    
    }

    创建隐藏文件,dwFlagsAndAttributes参数指定为隐藏属性FILE_ATTRIBUTE_HIDDEN

        //使用CreateFile函数创建
        HANDLE fHandle;
        fHandle = CreateFile("D:\1\3.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN, 0);
        if (fHandle == INVALID_HANDLE_VALUE)
        {
            MessageBox("创建失败");
        }
    • 演示

    Caesar卢尚宇

    2021年1月30日

    作者: 阿飞

    出处: https://www.cnblogs.com/nxopen2018/>

    关于作者:......

    如有问题, 可在底部(留言)咨询.

  • 相关阅读:
    深入浅出 Application Insights--学习笔记
    .NET Core 在 K8S 上的开发实践--学习笔记
    传统.NET应用向微服务架构迁移的实践经验--学习笔记
    微服务快速开发框架的设计--学习笔记
    在.NET Core下的机器学习--学习笔记
    RPA AI .NET Core 与未来--学习笔记
    当我们在谈 .NET Core 跨平台时,我们在谈些什么?--学习笔记
    .Net Core + 微信赋能企业级智能客服系统--学习笔记
    用ASP.NET Core构建可检测的高可用服务--学习笔记
    ASP.NET Core基于K8S的微服务电商案例实践--学习笔记
  • 原文地址:https://www.cnblogs.com/nxopen2018/p/14350873.html
Copyright © 2011-2022 走看看