合并两个文件,替换文件,获取文件大小

Posted lizhanzhe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合并两个文件,替换文件,获取文件大小相关的知识,希望对你有一定的参考价值。

合并文件   
void OpMergerFile(string readpath, string writepath)
{
//    char cline;
//    ifstream ifile;
//    ofstream ofile;
//    if (_access(readpath.c_str(), 0) == 0) {
//#ifdef WIN32
//        ifile.open(readpath, ios::binary | ios::in);     //读写都要以二进制形式,否则遇到/0就认为结束
//        ofile.open(writepath,  ios::binary | ios::app);
//#else
//        ifile.open(readpath, ios::binary);
//        ofile.open(writepath, fstream::app);
//#endif // WIN32
//        while (ifile.get(cline))
//            ofile << cline;
//
//        ifile.close();
//        ofile.close();
    //}

   char c;
   FILE* rfp, *wfp;
   fopen_s(&rfp, readpath.c_str(), "rb");
  fopen_s(&wfp, writepath.c_str(), "a+b");

  fseek(wfp, 0, SEEK_END); 

  while (fread(&c, 1, 1, rfp))
  fwrite(&c, 1, 1, wfp);
  fclose(rfp); fclose(wfp);

return; }


替换文件

void OpReplaceFile(string readpath,string writepath)
{
    char cline;
    ifstream ifile;
    ofstream ofile;
    if (IfFileExist(readpath.c_str()) && IfFileExist(writepath.c_str())) {
#ifdef WIN32
    ifile.open(readpath, ios::binary);
    ofile.open(writepath, ios::binary);
#else
    ifile.open(readpath);
    ofile.open(writepath);
#endif // WIN32
        
        while(ifile.get(cline))
            ofile << cline;
        ifile.close();
        ofile.close();
    }
    return;
}

拼接文件(保留其中一个文件不变)

void ToRightMergerFile(string MergerFilepath,string HoleFilePath)
{
    std::string tmp = "./intertemp";
    MergerFile(HoleFilePath, tmp);
    MergerFile(MergerFilepath,tmp);
    OpReplaceFile(tmp, MergerFilepath);
    remove(tmp.c_str());
}

 

 获取文件大小

long GetFileLength(const std::string filepath)
{
    long LocalFilelen = 0;
    FILE* pfile;
#ifdef WIN32
    if (fopen_s(&pfile, filepath.c_str(), "r") != 0)
        return 0;
    if(pfile)
    {
        fseek(pfile, 0, SEEK_SET);
        fseek(pfile, 0, SEEK_END);
        LocalFilelen = ftell(pfile);
    }
#else
    pfile = fopen(filepath.c_str(), "r");
    if(pfile)
    {
        fseek(pfile, 0, SEEK_SET);
        fseek(pfile, 0, SEEK_END);
        LocalFilelen = ftell(pfile);
    }
#endif

    fclose(pfile);
    pfile = NULL;
    return LocalFilelen;

 

以上是关于合并两个文件,替换文件,获取文件大小的主要内容,如果未能解决你的问题,请参考以下文章

替换 ALAssertLibrary 以获取文件名

ffmpeg 获取音频文件PCM切片

编写一个程序, 将 a.txt 文件中的单词与 b.txt 文件中的 单词交替合并到 c.txt 文件中, a.txt 文件中的单词用回车符 分隔, b.txt 文件中用回车或空格进行分隔。(代码片段

M3U8合并最简单的方法

使用ffmpeg合并两个文件时获取异常

为啥合并 PDF 会产生文件大小气球?