文件IO操作分为 2 种 非缓冲文件IO 和 缓冲文件IO

它们的接口区别是

非缓冲   open() close() read() write()
缓冲 fopen() fclose() fread() fwrite()

1. 非缓冲文件操作

//规模较小 实时性高 的文件
// 例如串口等高速实时通信
// 0 标准输入,通过终端输入
// 1 标准输出,通过终端输出
// 2 标准错误,系统中存放错误的堆栈
//非缓冲文件操作函数只有2个
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h> ssize_t read(int fildes, void *buf, size_t nbyte);
ssize_t write(int fildes, const void *buf, size_t nbyte);

1.1 read()

//read()用于从文件中将信息读取到指定的内存区域,
//read(文件表示符,内存块指针,内存块大小)文件标识符由open获得。
#include <stdio.h>
#include <string.h> #include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h> #define LENGTH 1024 int main(int argc, char const *argv[])
{
char buf[LENGTH] = {};
int fd;
int len; fd = open("./read.c",O_RDONLY);
if(fd < ){
puts("file open fail .");
return -;
}
puts("open success ."); len = read(fd,buf,LENGTH);
if(len != -){
puts("read ok");
if(len == ){
puts("read no.");
}else{
printf("%s\n", buf);}
}
close(fd); return ;
}

1.2 write()

//write()用于将缓存内容写入到文件中。
//ssize_t write(int fildes, const void *buf, size_t nbyte); fildes由open获得

例子:从键盘输入一个字符串,再将该字符串保存到文件中。

#include <stdio.h>
#include <string.h>
#include <unistd.h> #include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define LENGTH 10240 int main(int argc, char const *argv[])
{
int fd;
int ret;
char buf[LENGTH] = {};
puts("请输入要保存的信息:"); if((ret = read(,buf,LENGTH)) < ) //从非缓冲标准输入0(键盘)获取数据,read到buf中,
{
perror("读取失败");
return -;
} fd = open("./copy1",O_WRONLY|O_CREAT,); //以创造的方式打开copy1文件
if(fd < )
{
puts("file open faile");
return -;
} if((ret = write(fd,buf,ret)) < ) //将buf中的内容写到文件中。
{
puts("写入失败");
return -;
}
close(fd); //最后关闭文件id。 return ;
}

linux文件IO操作篇 (一) 非缓冲文件的更多相关文章

  1. linux文件IO操作篇 (二) 缓冲文件

    2. 缓冲文件操作 //规模较大 实时性低的文件 //当数据长度快要超过缓冲区的范围时,或者时间周期达到时,数据才被送往指定位置 //需要使用FILE * 作为文件标识符 //stdin 标准输入 / ...

  2. Linux文件IO操作

    来源:微信公众号「编程学习基地」 目录 文件操作 Linux文件类型 Linux文件权限 修改文件权限 Linux error 获取系统调用时的错误描述 打印错误信息 系统IO函数 open/clos ...

  3. Linux学习记录--文件IO操作相关系统编程

    文件IO操作相关系统编程 这里主要说两套IO操作接口,各自是: POSIX标准 read|write接口.函数定义在#include<unistd.h> ISO C标准 fread|fwr ...

  4. (代码篇)从基础文件IO说起虚拟内存,内存文件映射,零拷贝

    上一篇讲解了基础文件IO的理论发展,这里结合java看看各项理论的具体实现. 传统IO-intsmaze 传统文件IO操作的基础代码如下: FileInputStream in = new FileI ...

  5. 9.2 Go 文件IO操作

    9.2 Go 文件IO操作 1.1.1. bufio包 带有缓冲区的IO读写操作,用于读写文件,以及读取键盘输入 func main() { //NewReader返回一个结构体对象指针 reader ...

  6. 【UNIX环境高级编程】文件 IO 操作 一 ( open | close | creat | lseek | write | read )

    博客地址 : http://blog.csdn.net/shulianghan/article/details/46980271 一. 文件打开关闭操作相关函数介绍 1. open 函数 (1) op ...

  7. 树莓派学习笔记——使用文件IO操作GPIO SysFs方式

    0 前言     本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...

  8. imx6用文件io操作gpio

    具体请参考: http://blog.csdn.net/u014213012/article/details/53140781 这里要注意的是: 要让linux支持文件io方式操作gpio,首先驱动必 ...

  9. 文件IO操作

    前言 本文介绍使用java进行简单的文件IO操作. 操作步骤 - 读文件 1. 定义一个Scanner对象 2. 调用该对象的input函数族进行文件读取 (参见下面代码) 3. 关闭输入流 说明:其 ...

随机推荐

  1. SQL Server ->> 查看SQL Server备份历史

    找到最近数据库备份的细节信息,包括备份设备名和地址,最后备份时间 ------------------------------------------------------------------- ...

  2. 设计模式——工厂方法模式(Factory Method)

    原文地址:http://www.cnblogs.com/Bobby0322/p/4179921.html 介绍 在简单工厂模式中,我们提到,工厂方法模式是简单工厂模式的一个延伸,它属于Gof23中设计 ...

  3. harbor使用aws s3存储

    参考:http://www.vmtocloud.com/how-to-configure-harbor-registry-to-use-amazon-s3-storage/ s3 bucket权限:更 ...

  4. apache-实战(二)

    Apache 虚拟主机 --用apache或nginx就可以做 一台服务器跑多台web服务 VPS virtual private server 虚拟专用服务器 --使用虚拟化技术来做 云服务器 虚拟 ...

  5. GridView中的更新按钮不能触发RowUpdating事件

    当点击“编辑”按钮以后,可以看到“更新”和“取消”按钮,“取消”按钮可以正常触发RowCancelingEdit事件,但是“更新”按钮不能触发RowUpdating事件. 解决方案: 在<asp ...

  6. Git的认识与学习

    第一部分:我的git地址是https://github.com/monkeyDyang 第二部分:我对git的认识 Git是一种良好的.支持分支管理的代码管理方式,能很好地解决团队之间协作的问题.每个 ...

  7. Andriod ADB Interface驱动安装失败Configure USB Debug for Android

    介绍: Linux或Apple或OS X ,已经安装了USB驱动调试为Android的帮助,确认您的Android USB调试连接配置和正常工作. Windows下需要自己手动下载驱动安装或者通过下载 ...

  8. python:pymysql模块使用

    一,基本使用 # 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,p ...

  9. Spring Boot 配置文件详解:Properties和YAML

    一.配置文件的生效顺序,会对值进行覆盖: 1. @TestPropertySource 注解 2. 命令行参数 3. Java系统属性(System.getProperties()) 4. 操作系统环 ...

  10. Android学习笔记_7_使用 sax 或者 dom 或者 pull 解析XML文件

    一.Pull解析介绍: Android上使用SAX和DOM方式解析XML的方法,并且对两种做了简单的比较,通过比较我们知道对在往往内存比较稀缺的移动设备上运行的Android系统来说,SAX是一种比较 ...