c++文件的复制,删除,重命名

1.文件的复制

#include<iostream>
#include<fstream>
#include<io.h>
#include<windows.h>
using namespace std ;

/**复制文件
filename :要复制的文件名
newfile :要复制到的文件名
*/
int cpy(char*filename,char*newfile)
{
   ifstream in ;
   ofstream out ;
   /**
   open函数的原型是
   open(const char*filename,ios_base::openmode mode=ios_base::in) ;
   in_stream.open("file.txt");这样写参数实际上是指向这个常量字符串的指针
   */
   //打开文件
   in.open(filename);
   //打开文件失败
  if(in.fail()){
    cout<<"打开文件失败"<<endl ;
     in.close();
     out.close();
     return 0 ;
   }
  out.open(newfile);
  if(out.fail()){
    cout<<"创建文件失败"<<endl ;
     in.close();
     out.close();
     return 0 ;
  }else{//复制文件
   out<<in.rdbuf();
   out.close();
   in.close();
   return 1 ;
  }
}

 2.文件的删除

  

/**删除文件
_access(char *,int) 判断文件是否存在
存在返回0,不存在返回-1
_access(const char *path,int mode)
mode的值:
00 是否存在
02 写权限
04 读权限
06 读写权限
*/
void deletee(char * filename)
{
if(!_access(filename,0))//如果文件还存在:文件只读,无法删除
{
    //去掉文件只读属性
    SetFileAttributes(filename,0) ;
    if(DeleteFile(filename))
    {
        cout<<"删除成功"<<endl ;
    }else{//无法删除,权限不够
     cout<<" 无法删除:文件为只读属性或无删除权限."<<endl;
    }

}else{//文件不存在
    cout<<"文件不存在"<<endl ;
}
cin.get();
}

 

3.文件的重命名

 

/**
重命名
*/
void Rename(char*filename,char*newname)
{
    if(!_access(filename,0)){ //如果文件存在

           if(!rename(filename,newname))//删除成功
             {
                 cout<<filename<<"文件成功重命名为"<<newname<<endl ;
             }
            else//无法重命名:文件打不开或权限不够
            {
             cout<<"文件无法重命名(可能原因如下):"<<endl;
             cout<<"\t"<<"1. "<<newname<<" 已存在"<<endl
             <<"\t"<<"2. "<<newname<<" 正在使用,未关闭."<<endl
             <<"\t"<<"3. "<<"你没有权限重命名此文件."<<endl;
            }
        }else{//文件不存在

       cout<<filename<<"不存在该文件。"<<endl ;

        }
        cin.get();
    }

 

你可能感兴趣的:(C++)