文件读写(Linux)
写在前:此文章不作为标准,仅为个人学习记录;如有侵权等问题,及时私信处理。
使用c/c++语言实现文件读写,现有三种方式
1、Linux系统文件操作
2、c语言标准输入输出
3、c++文件输入输出流
一、Linux系统文件操作
1头文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
2、函数接口
1、打开
int open(const char *pathname, int flags);
返回值:成功:文件描述符失败:-1
参数:pathname:文件路径flags:文件操作标志O_RDONLY 只读O_WRONLY 只写O_RDWR 读写O_CREAT 创建文件 O_EXCL 需要和O_CREAT同时使用,表示新建的文件不能存在,成功,否则open就会失败O_NOCTTY 不是终端设备O_TRUNC 文件内容清空O_APPEND 追加O_ASYNC 异步io,什么时候io不确定,O_NONBLOCK 非阻塞 2、关闭
int close(int fd);
返回值:成功:0失败:-1
参数:fd:文件描述符3、读取
ssize_t read(int fd, void *buf, size_t count);
返回值:成功:返回读取长度失败:-1
参数:fd:文件描述符buf:读取保存空间count:读取长度3、写入
ssize_t write(int fd, const void *buf, size_t count);
返回值:成功:写入长度失败:-1
参数:fd:文件描述符buf:写入内容count:写入长度
二、c语言标准输入输出
1、头文件<stdio.h>
2、函数接口
1、打开
FILE *fopen(const char* filename, const char* mode);
返回值:成功:文件指针流地址失败:NULL
参数:filename:文件名字mode:文件操作方式r:只读,文件必须存在w:只写,如果文件不存在则创建文件,如果文件已存在则将文件截断(清空)r+:打开一个文件允许读写,文件必须存在w+:打开一个文件允许读写,如果不存在就创建一个,文件已存在就截断(清空)a:以追加方式写入,若文件不存在的创建,写入内容会追加在文件结尾a+:允许读写方式,若文件不存在则创建文件,读取会从文件开头开始,写入以追加方式2、关闭
int fclose(FILE* fp);
返回值:成功:0失败:返回EOF
参数:fp:文件指针流地址3、读取
size_t fread(char* buffer, size_t size, size_t count, FILE* fp);
返回值:成功:写入个数失败:0
参数:buffer:读取文件内容存储空间size:读取文件长度count:读取个数,size的个数fp:文件指针流地址4、写入
size_t fwrite(char* buffer, size_t size, size_t count, FILE* fp);
返回值:成功:读取个数失败:0
参数:buffer:写入文件内容存储空间size:写入文件长度count:写入个数,size的个数fp:文件指针流地址5、定位
int fseek(FILE* fp, long offset, int fromwhere);
返回值:成功:0失败:-1
参数:fp:文件指针流地址offset:相对位置值fromwhere:SEEK_SET: 文件开头SEEK_CUR: 当前位置SEEK_END: 文件结尾6、文件位置获取
long ftell(FILE* fp);
返回值:成功:相对文件头偏移字节失败:-1
参数:fp:文件指针流地址
三、c++文件输入输出流
1、头文件<fstream>
2、函数接口
1、打开
ofstream file;
ifstream file;
void file.open(const char *filename, ios::openmode mode);
参数:ios::app 追加写入ios::ate 文件打开后定位文件末尾ios::in 打开用于读取ios::out 打开用于写入ios::trunc 如果文件已存在被截断ios::binary 以二进制方式打开2、关闭
void file.close(); 3、读取
istream* file.read (char* buffer, int size);
参数: buffer:读取存储内容size:读取长度4、写入
ostream* file.write (const char* buffer, int size);
参数:buffer:写入存储内容size:写入长度5、定位
basic_istream& file.seekg (off_type off, ios_base::seekdir way);
参数:off:相对位置way:ios::beg:所打开文件的开头,这是默认值;ios::cur:文件读写指针当前的位置;ios::end:文件结尾6、文件位置获取
int file.tellg();
返回值:当前流指针位置7、判断文件打开是否成功
bool file.is_open();
返回值:成功:1失败:0
在linux环境中,对同一文件读写,使用时间为:
c++的fstream:c标准库:linux系统库 = 13:12:12
测试不准确,仅作参考
文件读写(Linux)相关推荐
- Linux优化大量文件读写,[Linux] 使用noatime属性优化文件系统读取性能
当文件被创建,修改和访问时,Linux系统会记录这些时间信息,当访问足够频繁将会是很大的开销,因为每次访问都会记录时间,所以 我们今天使用 # tar xf bonnie++-1.97.tgz # c ...
- 外网访问arm嵌入式linux_嵌入式Linux系统编程——文件读写访问、属性、描述符、API
Linux 的文件模型是从 Unix 的继承而来,所以 Linux 继承了 UNIX 本身的大部分特性,然后加以扩展,本章从 UNIX 系统接口来描述 Linux 系统结构的特性. 操作系统是通过一系 ...
- Linux文件读写机制及优化方式
本文只讨论Linux下文件的读写机制,不涉及不同读取方式如read,fread,cin等的对比,这些读取方式本质上都是调用系统api read,只是做了不同封装.以下所有测试均使用open, read ...
- linux存储--从内核文件系统看文件读写过程(四)
系统调用 操作系统的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境,但是计算机系统的各种硬件资源是有限的,因此为了保证每一个进程都能安全的执行.处理器设有两种模式:"用户模式&q ...
- linux系统怎么查看权限设置密码,linux系统怎么查看及修改文件读写权限设置
在linux中查看与修改文件权限我们都必须使用命令来操作,不能像windows一样点几下就好了,那么linux系统怎么查看及修改文件读写权限设置?接下来大家跟着学习啦小编一起来了解一下linux系统查 ...
- _int64_在Linux对应对文件,LInux 编程基础学习笔记 持续ing 文件读写
一.文件读写 1.创建文件: 头文件: 函数:creat(char *path,int mode) mode:S_I(R|W|X)(USR|GRP|OTH) 对不同用户组的不同读写执行 2.打开 ...
- 【转】文件读写NDK(或Linux)
原文网址:http://www.ithao123.cn/content-10709539.html 使用NDK进行文件读写,有利于保存数据的安全性,项目需要,要文件读写从Java中处理搬到Linux平 ...
- Linux高级编程--05.文件读写
缓冲I/O和非缓冲I/O 文件读写主要牵涉到了如下五个操作:打开.关闭.读.写.定位.在Linux系统中,提供了两套API, 一套是C标准API:fopen.fclose.fread.fwrite.f ...
- Linux文件读写改权限详解
Linux文件读写改权限详解 文件的rwx权限 [ r ] [ w ] [ x ] 该文件可读(read) 该文件可修改(write) 该文件可执行(execute) 注意:只有当该文件所在目录有写权 ...
- web 上传文件到linux没权限,Javaweb上传文件到Linux 没有读写权限
一. 问题描述 背景描述: 0.saas-business-运营后台,website-网站页面. 1.javaweb程序(saas-business)部署在linux系统 tomcat服务器下,使用该 ...
最新文章
- 世界领先!详解蚂蚁金服自研数据库OceanBase的高可用及容灾方案
- 由键盘下陷引起的奇怪事件
- DataContractJsonSerializer类
- 51nod 1188 最大公约数之和 V2(欧拉函数)
- safari里的touch事件解析
- Cocos2d-x学习之 整体框架描述
- java天才_哪个天才写的?太精辟了
- 关于write和read以及文件读写位置
- python字母表_Python 一句话生成字母表的方法
- 显著目标检测:IVIF
- Pandas二次学习- 回炉重造(进阶)
- 已安装这个产品的两一个版本,无法下一步安装(0x80070666)
- Java Date Calendar类的使用 如何计算两个日期之间有多少天
- seo优化什么意思?
- 已知IP地址和子网掩码求出网络地址、广播地址、地址范围和主机数
- 市场调研你所不知道的几个关键点
- [Python]WEB编程--个人日记网站搭建(一)
- 杭电Oj刷题(2017)
- 游戏美术和策划的要求
- 记录一次elasticsearch挂掉之后无法启动 kibana Status: Red -分析过程
热门文章
- 网页打不开服务器分析,网页打不开是什么原因 网页打不开原因分析【解决方法】...
- 水果店圈子:水果店的营销方案有哪些,水果店有哪些营销策略
- java perm space_java.lang.OutOfMemoryError: PermGen space及其解决方法
- CLion 使用 clang-cl 工具链时未正确链接 vcpkg 中的 Boost 外部库
- Shell脚本编程35讲视频教程
- 如何开搓饵不掉钩_搓饵干散不咬钩,拉饵雾化就上鱼。99%钓鱼人心中的疑惑
- js模拟群聊场景-聊天信息动态出现效果
- 前端常用CSS样式,前端笔记
- Java第十二天~第十三天/11.04~11.05
- Java异常处理习题