testwarfile.cpp

来自「ftpserver very good sample」· C++ 代码 · 共 91 行

CPP
91
字号
#include "stdafx.h"#include <assert.h>#include <iostream>#include "WarPath.h"#include "WarUtf8.h"#include "WarFile.h"#include "WarFileDriverWin32.h"#include "WarLog.h"#include "WarLogIOStreamHandler.h"#include "WarDirList.h"using namespace std;void TestWarFile(){    // Enable logging.     WarLogEngine log_engine;    log_engine.InstallHandler(new WarLogIoStreamHandler(cout, "cout"));      // Enable debug events we want to view    log_engine.EnableEvent("cout", WARLOG_FILES);    log_engine.EnableEvent("cout", WARLOG_DEBUG);    // Enable use of WarFile    WarFileEngine file_engine;    // Install "file://" driver for Win32    file_engine.AttachDriver(new WarFileDriverWin32);     {        war_file_ptr_t my_file_ptr = WarFile::Create("test.file");                try        {            my_file_ptr.GetData().Open(WarFile::F_WRITE                 | WarFile::F_TRUNCATE);                        static const char *out_buf = "test\nLine 2\nline 3";            my_file_ptr.GetData().Write((war_ccptr_t)out_buf,                 ::strlen(out_buf));                        cout << "Size of binary file is "                 << (size_t)my_file_ptr.GetData().GetLength()                << " bytes"                << endl;            my_file_ptr.GetData().Close();                        my_file_ptr.GetData().Open(WarFile::F_READ                 | WarFile::F_MUSTEXIST                | WarFile::F_TEXT);                        cout << "Size of the same file opened in TEXT mode is "                 << (size_t)my_file_ptr.GetData().GetLength()                << " bytes"                << endl;                        string str_buffer;            while(my_file_ptr.GetData().ReadLine(str_buffer))                cout << '\t' << str_buffer << endl;        }        catch(WarException& ex)        {            cout << "File operation failed: "                 << ex.Explain()                << endl;        }    }#ifdef WIN32    WarUrl DirPath = "file:///C:\\";#else    WarUrl DirPath = "file:///";#endif    cout << "Listing dierctory:" << endl;    WarDirList DirListing;    DirListing.Create(DirPath, true);    for(WarDirList::nodelist_t::const_iterator P = DirListing.mList.begin()        ; P != DirListing.mList.end()        ; P++)    {        const WarDirListNode& node = P->Data();        cout << '\t' << node.mName << endl;    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?