Win环境下的文件读写

在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环境下的文件读写

时间: 2024-11-08 22:31:14

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

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

1.下载官方JDK,网址如下 http://www.oracle.com/technetwork/java/javase/downloads/index.html 现在已经发展到jdk8.0,为了保持兼容性,我们选择之前开发的版本1.6即可,安装过程相同的,注意根据自己的pc型号选择对应的jdk 2.下载完毕后,在Win环境下,进行双击运行,需要说明的是,由于在JDK安装的过程中,会进行提示安装JRE,所以我们不需要进行下载JRE. 也可以根据需要进行更改安装目录,但是推荐的安装目录格式如下,即

win环境下,django+postgresql配置

先下载postgresql的python包,选择合适自己的python版本和平台32位还是64位,http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 下载win环境下postgresql接口,http://www.stickpeople.com/projects/python/win-psycopg/ 设置django settings.py DATABASES项 注:第2步如果不操作就会出现from psycopg2._psycopg import

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

RAC环境下,初始化参数文件与但实例下参数文件有些异同,主要表现在初始化参数可以为多个实例公用,也可以单独设置各个实例的初始化参数.对于那些非共用的初始化参数则必须要单独设置,而共用的则可以单独设置,但一般不建议这么用.本文描述RAC 环境下参数文件(spfile)的相关管理工作. 有关RAC环境下的重要参数描述,请参考:RAC 环境下重要参数 [python] view plain copy print? 1.参数文件的位置 SQL> show parameter instance_name

win 环境下 node.js环境变量

 在win 环境下 node.js环境变量有两种情况:  (1)开发环境(development):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告. (2)生产环境(production):是指正式提供对外服务的,一般会关掉错误报告,打开错误日志. 代码: if (process.env.NODE_ENV === 'production') { //在生产情况下做怎样的处理 /* 你的代码*/} else { //在开发环境下做怎样的处理 /*

windows环境下音频文件播放

最近一个小项目要用到音乐播放模块,于是翻了一下资料,发现windows环境下播放音频文件有MCI.DirectShow等几种方式,当然也可以使用底层的api WaveOut播放.其中第一种方式最为简单,程序仅需通过发送MCI命令即可控制媒体设备,实现音频文件播放.暂停.停止等操作.其他两种方式就比较繁琐了,首先搭建DirectShow开发环境就比较周折,而使用WaveOut播放音频,需要先解码音频以获取pcm数据,然后才能播放.对于不涉及音频数据处理.仅需播放音频的简单使用场景,推荐使用MCI方

ThinkPHP环境下JS文件按模块部署

0.序言 一般来说,ThinkPHP的JS文件目录不是太友好:但允许修改参数确定JS的存放路径. 按照ThinkPHP的目录规范,JS文件一般视同静态资源处理,这样JS文件和视图htm文件将部署在两个完全不同的目录,即使二者属于同一应用.模块.通过Thinkphp提供的模板替换功能,配置模块的JS路径参数,可以将JS文件和普通视图文件都放在同一目录,例如Application/Module/View/目录下,这样在按应用.模块部署将变得更加便捷:两种文件所在位置比较接近,开发过程也相对比较方便(

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

版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写     本文地址:http://techieliang.com/2017/12/714/ 文章目录 1. 介绍  1.1. QXml-Token标记类型  1.2. 范例xml文件 2. 写xml 3. 读xml  3.1. 其他 1. 介绍 帮助文档:QXmlStreamReader.QXmlStr

win环境下jdk7与jdk8共存问题

1) jdk等配置文件修改 在安装JDK1.8时(本机先安装jdk1.7再安装的jdk1.8),会将java.exe.javaw.exe.javaws.exe三个文件copy到了C:\Windows\System32,这个目录在win环境变量中的优先级高于JAVA_HOME设置的环境变量优先级.所以我们在JAVA_HOME中如何配置都会显示出java8的信息 解决方案: 1.删除C:\Windows\System32目录下的java.exe javaw.exe javaws.exe2.同时我们在

ECStore在Win环境下如何运行CMD命令

大多数程序员使用windows开发环境来做ECStore二次开发,经常需要使用 ECStore自带的cmd命令进行一些系统操作,如清除缓存(cacheclean),升级程序(update),创建新的app(create app)等.但用iis+php+mysql+ZendLoader布署的开发环境,或者使用类似于WAMP.LNMP.LAMP之类的集成包布署的环 境,默认并不支持cmd.bat命令的执行. 要让windows开发环境下能使用ECStore的cmd命令,必须配置windows的环境变