zoukankan      html  css  js  c++  java
  • 一个经典的文件拷贝程序

    今天用到文件复制,总是想不起来这个代码具体怎么写的了,特此记下来,以后不要忘记。
        #include <sys/types.h>
        #include <sys/stat.h>
        #include <fcntl.h>
        #include <stdio.h>
        #include <errno.h>
    
        #define BUFFER_SIZE 1024
    
        int main(int argc,char **argv)
        {
            int from_fd,to_fd;
            int bytes_read,bytes_write;
    
            char buffer[BUFFER_SIZE];
            char *ptr;
    
            if(argc!=3)
            {
                fprintf(stderr,"Usage:%s fromfile tofile/n/a",argv[0]);
                exit(1);
            }
    
        /* 打开源文件 */
    
            if((from_fd=open(argv[1],O_RDONLY))==-1)
            {
                fprintf(stderr,"Open %s Error:%s/n",argv[1],strerror(errno));
                exit(1);
            }
    
        /* 创建目的文件 */
    
            if((to_fd=open(argv[2],O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR))==-1)
            {
                fprintf(stderr,"Open %s Error:%s/n",argv[2],strerror(errno));
                exit(1);
            }
    
        /* 以下代码是一个经典的拷贝文件的代码 */
    
            while(bytes_read=read(from_fd,buffer,BUFFER_SIZE))
            {
        /* 一个致命的错误发生了 */
                if((bytes_read==-1)&&(errno!=EINTR)) break;
                else if(bytes_read>0)
                {
                    ptr=buffer;
                    while(bytes_write=write(to_fd,ptr,bytes_read))
                    {
        /* 一个致命错误发生了 */
                        if((bytes_write==-1)&&(errno!=EINTR))break;
        /* 写完了所有读的字节 */
                        else if(bytes_write==bytes_read) break;
        /* 只写了一部分,继续写 */
                        else if(bytes_write>0)
                        {
                            ptr+=bytes_write;
                            bytes_read-=bytes_write;
                        }
                    }
        /* 写的时候发生的致命错误 */
                    if(bytes_write==-1)break;
    
                }
            }
            close(from_fd);
            close(to_fd);
            exit(0);
        }
    
    http://blog.chinaunix.net/uid-26663150-id-3171467.html
    
    
    
    
  • 相关阅读:
    JVM——类加载
    Java IO输入输出
    核心标签库和el
    request对象
    安装tomcat
    安装mongodb
    MySQL在简单命令行操作
    安装MySQL
    Java几种常见的异常类型
    Java简单正则表达式写爬虫
  • 原文地址:https://www.cnblogs.com/slz-coder150315/p/4376375.html
Copyright © 2011-2022 走看看