zoukankan      html  css  js  c++  java
  • 文件io之——read/write

    read函数从打开的设备或文件中读取数据。

    #include <unistd.h>
    ssize_t read(int fd, void *buf, size_t count);
    返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0

    读常规文件时,在读到count个字节之前已到达文件末尾。例如,距文件末尾还有30个
    字节而请求读100个字节,则read返回30,下次read将返回0。
    从终端设备读,通常以行为单位,读到换行符就返回了。
    从网络读,根据不同的传输层协议和内核缓存机制,返回值可能小于请求的字节数,后
    面socket编程部分会详细讲解。

    write函数向打开的设备或文件中写数据。
    #include <unistd.h>
    ssize_t write(int fd, const void *buf, size_t count);
    返回值:成功返回写入的字节数,出错返回-1并设置errno

    写常规文件时,write的返回值通常等于请求写的字节数count,而向终端设备或网络写
    则不一定。

    把main.c的内容全部拷贝到main.c.copy中:

    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include<stdio.h>
    #include<unistd.h>
    #include<string.h>
     int main(void)
    {
        int len;
        char buf[1024];
        umask(0);
        int fd1=open("main.c",O_RDWR);
        int fd2=open("main.c.copy",O_CREAT|O_WRONLY|O_TRUNC,0644);
    
       while((len= read(fd1,buf,sizeof(buf)))>0)
       {
             write(fd2,buf,len);
       }
        close(fd1);
        close(fd2);
        return 0;
     }

    read:是把文件内容读到缓冲区

    write:是把缓冲区内容写到文件

  • 相关阅读:
    典型用户和场景总结
    排球的详细记分规则
    js 实现全选
    博客搬家啦!
    leetcode #980 不同路径||| (java)
    ADV-299 宰羊 (java,过了30%)
    ADV-292 计算行列式 java
    ADV-302 秘密行动 java
    ADV-297 快速排序 java
    ADV-298 和谐宿舍2 动态规划
  • 原文地址:https://www.cnblogs.com/yangguang-it/p/7070075.html
Copyright © 2011-2022 走看看