int main(int argc,char **argv) { if(argc<3)//参数少于3,给出提示并退出 {
printf("请按如下格式运行!\n") printf("./a.out [原始图片] [目标图片]\n")
return 0
}
int fd1 = open(argv[1],O_RDONLY)//只读方式打开源文件 if(-1 == fd1) { perror("打开文件失败")
return 0
} int fd2 = open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0666)//读写方式打开文件,有则清空,没有则创建 char buf[100]={0} int res
while(res = read(fd1,buf,sizeof(buf)))//从源文件读出 {
write(fd2,buf,res)//写入到目标文件
}
close(fd1)//关闭文件 close(fd2) return 0
}
拷贝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
#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
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)