在win环境下,有许多方法可以对文件进行读写操作,如MFC 中的CFile类,及一些开源的项目如QT中的QFile。开源的好得是可以多平台,而MFC只是微软自家的东西,对于想写跨平台的人,最好不用MFC。

最近在写开发时,突然碰到了一个问题,也是与读写文件有关,不过用的是C的方法,而不是C++,问题的表现是用C 中的Open创建的文件都是只读的,平常很少用这个方法所在网上找了下,才发现这个函数还有一个权限参数,默认是只读。现将C方式下的两种文件操作归纳下

open比起fopen是更低级别的IO操作,所以程序需要更多的人工操作

int open(const char *path, int access,int mode)

path 要打开的文件路径和名称

    access
访问模式,宏定义和含义如下:                      
 
  
   
 O_RDONLY        
1   
只读打开                       
 
  
   
 O_WRONLY        
2   
只写打开                       
 
  
   
 O_RDWR          
4   
读写打开                   
 
  
   
 还可选择以下模式与以上3种基本模式相与:                  
 
  
   
   
 O_CREAT    
0x0100  
创建一个文件并打开              
 
  
   
   
 O_TRUNC    
0x0200  
打开一个已存在的文件并将文件长度设置为0,其他属性保持       
 
  
   
   
 O_EXCL     
0x0400  
未使用                          
 
  
   
   
 O_APPEND   
0x0800  
追加打开文件                   
 
  
   
   
 O_TEXT     
0x4000  
打开文本文件翻译CR-LF控制字符   
 
  
   
   
 O_BINARY   
0x8000  
打开二进制字符,不作CR-LF翻译                                                      
 
    mode
该参数仅在access=O_CREAT方式下使用,其取值如下:    
 
  
   
 S_IFMT     
0xF000  
文件类型掩码                    
 
  
   
 S_IFDIR    
0x4000  
目录                            
 
  
   
 S_IFIFO    
0x1000   FIFO
专用                       
 
  
   
 S_IFCHR    
0x2000  
字符专用                        
 
  
   
 S_IFBLK    
0x3000  
块专用                          
 
  
   
 S_IFREG    
0x8000  
只为0x0000                      
 
  
   
 S_IREAD    
0x0100  
可读                            
 
  
   
 S_IWRITE   
0x0080  
可写                            
 
  
   
 S_IEXEC    
0x0040   可执行
FILE *fopen(char *filename, char *mode)
    filename
文件名称
    mode
打开模式:                                          
 
  
   
 r  
只读方式打开一个文本文件                         
 
  
   
 rb 
只读方式打开一个二进制文件                       
 
  
   
 w  
只写方式打开一个文本文件                         
 
  
   
 wb 
只写方式打开一个二进制文件                       
 
  
   
 a  
追加方式打开一个文本文件                         
 
  
   
 ab 
追加方式打开一个二进制文件                       
 
  
   
 r+ 
可读可写方式打开一个文本文件                     
 
  
   
 rb+
可读可写方式打开一个二进制文件                   
 
  
   
 w+ 
可读可写方式创建一个文本文件                     
 
  
   
 wb+
可读可写方式生成一个二进制文件                   
 
  
   
 a+ 
可读可写追加方式打开一个文本文件                 
 
  
   
 ab+ 可读可写方式追加一个二进制文件
open和fopen的区别:
前者属于低级IO,后者是高级IO。
前者返回一个文件描述符,后者返回一个文件指针。
前者无缓冲,后者有缓冲。
前者与 read, write 等配合使用, 后者与 fread, fwrite等配合使用。
后者是在前者的基础上扩充而来的,在大多数情况下,用后者。

Win环境下的文件读写的更多相关文章

  1. Win环境下Oracle小数据量数据库的物理备份

    Win环境下Oracle小数据量数据库的物理备份 环境:Windows + Oracle 单实例 数据量:小于20G 重点:需要规划好备份的路径,建议备份文件和数据库文件分别存在不同的存储上. 1.开 ...

  2. 在Win环境下配置java的环境进行开发步骤

    1.下载官方JDK,网址如下 http://www.oracle.com/technetwork/java/javase/downloads/index.html

  3. win环境下安装配置openCV-4.3.0

    win环境下安装openCV-4.3.0 首先下载 推荐国内镜像 官网太太太慢了 附上 下载地址 下载之后打开exe解压到目录都是常规操作 环境变量的配置 依次打开到系统变量的path 新建一个路径为 ...

  4. windows环境下创建 .文件夹

    一.windows环境下创建 .文件夹 1.新建一个文件夹 2.重命名为.properties.(名字前后都加点) 二.windows环境下创建 .文件 1.上面的方法对文件同样适用 2.运行CMD, ...

  5. linux环境下给文件加密/解密的方法

      原文地址:linix环境下给文件加密/解密的方法 作者:oracunix 一. 利用 vim/vi 加密:优点:加密后,如果不知道密码,就看不到明文,包括root用户也看不了:缺点:很明显让别人知 ...

  6. RAC 环境下参数文件(spfile)管理

    RAC环境下,初始化参数文件与但实例下参数文件有些异同,主要表现在初始化参数可以为多个实例公用,也可以单独设置各个实例的初始化参数.对于那些非共用的初始化参数则必须要单独设置,而共用的则可以单独设置, ...

  7. QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写   ...

  8. win 环境下 node.js环境变量

     在win 环境下 node.js环境变量有两种情况:  (1)开发环境(development):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告. ...

  9. win环境下使用sqlmap写shell + MYSQL提权(默认就是system权限)

    今天在来一个mysql提权 (也可以说是默认system权限提的) 在被黑站点找到一个站   先教拿shell是有注入漏洞的 有可能是root权限的注入点 可以确定是有注入漏洞的 也得到了 物理路径 ...

随机推荐

  1. 关于composer安装插件时候提示找不到fxp插件时候的解决办法

    如果你在某个目录使用composer.phar,而且在别的目录页使用了composer,并没有全局安装composer的时候,不同目录之间的可能会互相干扰从而报错 root@tyr:/var/www/ ...

  2. 详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别(转)

    对于php$_SERVER这个全局变量 ,里面有很多的参数,慢慢的熟悉 1,http://localhost/aaa/ (打开aaa中的index.php)结果:$_SERVER['QUERY_STR ...

  3. windos系统定时执行批处理文件(bat文件)

    Win7怎么设置定时自动执行任务? 点击开始按钮,依次选择打开“所有程序—附件—系统工具”,找到“任务计划程序”即可打开Win7系统的任务计划设置面板.也可以点击Win7开始按钮,在多功能搜索框中输入 ...

  4. LayoutInflater的使用

    在实际工作中,事先写好的布局文件往往不能满足我们的需求,有时会根据情况在代码中自定义控件,这就需要用到LayoutInflater.LayoutInflater在Android中是“扩展”的意思,作用 ...

  5. MyBatis 简介

    MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis ...

  6. centos 7 编译zabbix 3.2.2

    已有LNMP环境. 1.安装zabbix需要的依赖包,红色部门的包官方yum源没有,需要自己下载 yum install net-snmp fping iksemel net-snmp-devel   ...

  7. 准循环LDPC码用于公钥密码时的奇偶校验矩阵

    设H为奇偶校验矩阵,其行权重为d.Q为转置矩阵,其行权重为m.对于LDPC码,有d/n<< 1, m/n< 1. H´=H·QT是用于公钥密码的奇偶校验矩阵.它不是老密码G的奇偶校验 ...

  8. TAP/TUN浅析(一)

    参考链接:https://www.ibm.com/developerworks/cn/linux/1310_xiawc_networkdevice/ TAP 设备与 VETH 设备     TUN/T ...

  9. javascript实现登录验证码

    1.js var code="" ; //在全局 定义验证码 function createCode(){ code = ""; ;//验证码的长度 var c ...

  10. Sql Server R2还有备份数据库错误

    错误信息描述  该数据库是运行版本10.50.1600的服务器上备份的.该版本与此服务器(运行版本10.00.1600)不兼容.请在支持该被份的服务器上还原该数据,  或者使用与此服务器兼容的备份(M ...