copycoder.cpp
来自「由7-zip提供的压缩、解压缩程序」· C++ 代码 · 共 53 行
CPP
53 行
// Compress/CopyCoder.cpp#include "StdAfx.h"#include "CopyCoder.h"#include "../../../Common/Alloc.h"#include "../../Common/StreamUtils.h"namespace NCompress {static const UInt32 kBufferSize = 1 << 17;CCopyCoder::~CCopyCoder(){ ::MidFree(_buffer);}STDMETHODIMP CCopyCoder::Code(ISequentialInStream *inStream, ISequentialOutStream *outStream, const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress){ if (_buffer == 0) { _buffer = (Byte *)::MidAlloc(kBufferSize); if (_buffer == 0) return E_OUTOFMEMORY; } TotalSize = 0; while(true) { UInt32 realProcessedSize; UInt32 size = kBufferSize; if (outSize != 0) if (size > *outSize - TotalSize) size = (UInt32)(*outSize - TotalSize); RINOK(inStream->Read(_buffer, size, &realProcessedSize)); if(realProcessedSize == 0) break; RINOK(WriteStream(outStream, _buffer, realProcessedSize, NULL)); TotalSize += realProcessedSize; if (progress != NULL) { RINOK(progress->SetRatioInfo(&TotalSize, &TotalSize)); } } return S_OK;}}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?