使用read和write实现文件拷贝
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
int main()
{
char Buf[32]=""; //定义一个32字节的数组
int fd,fd1,n;
ssize_t ret;
if((fd=open("Text.txt",O_RDONLY))==-1) //只读形式打开第一个文件
{
perror("open file");
return -1;
}
if((fd1=open("Text_1.txt",O_WRONLY))==-1)//只写形式打开第二个文件
{
perror("open file");
return -1;
}
ret=lseek(fd,0,SEEK_END); //计算文件的内容共有多少个字节
lseek(fd,0,SEEK_SET); //将光标移动到文件的开始
for(off_t i=0;i<(ret/32+1);i++) //根据文件的大小计算循环次数
{
n=read(fd,Buf,sizeof(Buf)); //读取文件的内容并返回读取的字节数
write(fd1,Buf,n); //向第二个文件写入读到相应数量的内容
}
close(fd); //关闭文件
close(fd1);
return 0;
}
图片复制
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
int main()
{
char Buf[32]=""; //定义一个32字节的数组
int fd,fd1,n;
ssize_t ret;
if((fd=open("milaoshu.bmp",O_RDONLY))==-1) //只读形式打开第一个文件
{
perror("open file");
return -1;
}
if((fd1=open("Text_1.bmp",O_WRONLY|O_CREAT|O_TRUNC,0664))==-1)//只写形式打开第二个文件
{
perror("open file");
return -1;
}
ret=lseek(fd,0,SEEK_END); //计算文件的内容共有多少个字节
printf("%ld\n",ret);
lseek(fd,0,SEEK_SET); //将光标移动到文件的开始
for(off_t i=0;i<(ret/32+1);i++) //根据文件的大小计算循环次数
{
n=read(fd,Buf,sizeof(Buf)); //读取文件的内容并返回读取的字节数
write(fd1,Buf,n); //向第二个文件写入读到相应数量的内容
}
close(fd); //关闭文件
close(fd1);
return 0;
}