如何在linux下用c编程实现文件的复制

如何在linux下用c编程实现文件的复制,第1张

打开一个读文件和一个写文件,用一个循环,fgetc每读一个字符,就用fputc写入另一个文件,这样就实现了文件的复制,和普通的C语言标准库编程是一样的,代码如下:

int c

FILE *in, *out

in = fopen("file.in", "r")

out = fopen("file.out", "w")

while( ( c = fgetc(in) ) != EOF)

fputc(c, out)

fclose(in)

fclose(out)

#include <stdlib.h>

#include <string.h>

#include <io.h>

#include <stdio.h>

#include <iostream>

#include <windows.h>

/*********************************************************************

功能:复制文件

参数:pSrc,原文件名

pDes,目标文件名

返回:<0,失败

>0,成功

作者:

*********************************************************************/

#define BUF_SIZE256

int copyFile(const char * pSrc,const char *pDes)

{

FILE *in_file, *out_file

char data[BUF_SIZE]

size_t bytes_in, bytes_out

long len = 0

if ( (in_file = fopen(pSrc, "rb")) == NULL )

{

perror(pSrc)

return -2

}

if ( (out_file = fopen(pDes, "wb")) == NULL )

{

perror(pDes)

return -3

}

while ( (bytes_in = fread(data, 1, BUF_SIZE, in_file)) >0 )

{

bytes_out = fwrite(data, 1, bytes_in, out_file)

if ( bytes_in != bytes_out )

{

perror("Fatal write error.\n")

return -4

}

len += bytes_out

printf("copying file .... %d bytes copy\n", len)

}

fclose(in_file)

fclose(out_file)

return 1

}

/*********************************************************************

功能:复制(非空)目录

参数:pSrc,原目录名

pDes,目标目录名

返回:<0,失败

>0,成功

作者:

*********************************************************************/

int copyDir(const char * pSrc,const char *pDes)

{

if (NULL == pSrc || NULL == pDes) return -1

mkdir(pDes)

char dir[MAX_PATH] = {0}

char srcFileName[MAX_PATH] = {0}

char desFileName[MAX_PATH] = {0}

char *str = "\\*.*"

strcpy(dir,pSrc)

strcat(dir,str)

//首先查找dir中符合要求的文件

long hFile

_finddata_t fileinfo

if ((hFile = _findfirst(dir,&fileinfo)) != -1)

{

do

{

strcpy(srcFileName,pSrc)

strcat(srcFileName,"\\")

strcat(srcFileName,fileinfo.name)

strcpy(desFileName,pDes)

strcat(desFileName,"\\")

strcat(desFileName,fileinfo.name)

//检查是不是目录

//如果不是目录,则进行处理文件夹下面的文件

if (!(fileinfo.attrib &_A_SUBDIR))

{

copyFile(srcFileName,desFileName)

}

else//处理目录,递归调用

{

if ( strcmp(fileinfo.name, "." ) != 0 &&strcmp(fileinfo.name, ".." ) != 0 )

{

copyDir(srcFileName,desFileName)

}

}

} while (_findnext(hFile,&fileinfo) == 0)

_findclose(hFile)

return 1

}

return -3

}

拷贝A文件夹到B目录

cp -rv A B

如果你正在B目录下,可以这样:

cp -rv A ./

拷贝A文件下的A1文件

cp -v A/A1 ./

或者

cp -v A/A1 B/

扩展资料:

文件复制命令cp

命令格式:

cp [-adfilprsu] 源文件(source) 目标文件(destination)

cp [option] source1 source2 source3 ...  directory

参数说明:

-a:是指archive的意思,也说是指复制所有的目录

-d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身

-f:强制(force),若有重复或其它疑问时,不会询问用户,而强制复制

-i:若目标文件(destination)已存在,在覆盖时会先询问是否真的 *** 作

-l:建立硬连接(hard link)的连接文件,而非复制文件本身

-p:与文件的属性一起复制,而非使用默认属性

-r:递归复制,用于目录的复制 *** 作

-s:复制成符号连接文件(symbolic link),即“快捷方式”文件

-u:若目标文件比源文件旧,更新目标文件

如将/test1目录下的file1复制到/test3目录,并将文件名改为file2,可输入以下命令:

cp /test1/file1 /test3/file2


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11558518.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存