zoukankan      html  css  js  c++  java
  • 文件打包学习

    /**************************************************************
    技术博客
    http://www.cnblogs.com/itdef/
     
    技术交流群
    群号码:324164944
     
    欢迎c c++ windows驱动爱好者 服务器程序员沟通交流
    **************************************************************/

    一般文件是为了整合零散文件和进行压缩节约空间,不过也有诸如加密记录文件依赖性等特殊要求。

    这里学习打包代码写几个小例子。

    首先最原始的设计肯定是读取零散的文件,写入到一个大文件中。当然,肯定要记录文件的名字和文件长度以及这个零散文件在大文件中的偏移。

    如图

    #pragma once
    #include <fstream>  
    
    using namespace std;
    
    struct ItemInfo {
        int64_t itemTotalLen_;
        int64_t    fileLength_;
        int64_t    itemOffset_;
        char name[0];
    };
    
    
    class MyPackage1 {
    private:
        fstream*    packageFile_;
    public:
        MyPackage1():packageFile_(NULL){}
        ~MyPackage1() {
            if(NULL != packageFile_){
                packageFile_->close();
                delete packageFile_;
                packageFile_ = NULL;
            }
        }
    
        bool CreatePackFile(const char* fileName);
        bool AddFileToPackFile(const char* fileName);
        bool GetPackFileItemInfo(const char* fileName);
    };
    View Code

    第二版:

    // MyPackage2.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include "MyPackage.h"
    
    
    int main()
    {
        
        {
            MyPackage2 pack;
            pack.CreatePackFile("test.pak");
            pack.AddFileToWriteList("1.rar");
            pack.AddFileToWriteList("2.rar");
            pack.SavePackFile();
        }
        
        {
            MyPackage2 pack;
            pack.LoadPackAndUnpack("test.pak");
        }
        
        return 0;
    }
    View Code

    具体代码见oschina

    http://www.oschina.net/code/snippet_614253_56608

  • 相关阅读:
    2021年4月1日
    2021年3月31日
    2021年3月30日
    2021年3月29日
    2021年3月27日
    2021年3月26日
    2021年3月25日
    人件集阅读笔记03
    2020年3月24日
    构建之法阅读笔记02
  • 原文地址:https://www.cnblogs.com/itdef/p/5536957.html
Copyright © 2011-2022 走看看