USB_Config_Vendor/CC_SDK/Include/Module/File/CCFileOutStream.h

52 lines
2.3 KiB
C
Raw Normal View History

2026-02-03 14:36:30 +08:00
#ifndef CCFileOutStream_H
#define CCFileOutStream_H
#include "CC.h"
#ifdef _WIN32
#include <tchar.h>
#endif
using CCOutStream = std::ofstream;
namespace CTL {
class FileOutStream final : public CCOutStream{
inline static std::map<String, std::mutex> mutexMap;
inline static std::mutex mapMutex; // 保护 mutexMap 的互斥量
String m_filename; // 存储文件名
std::vector<char> m_buffer;
public:
using std::ofstream::basic_ofstream;
FileOutStream() = default;
FileOutStream(CTL::String& filename, bool append = false);
FileOutStream(CTL::String& Path,openmode mode);
~FileOutStream() override;
// 写入单个字节
void write(unsigned char byte);
// 写入字节数组
void write(const std::vector<unsigned char>& data);
void write(const char* data, size_t size);
// 写入部分字节数组
void write(const std::vector<unsigned char>& data, size_t offset, size_t length);
void setBuffer(size_t size);
bool open(const CTL::String& Path,openmode mode);
//--------------------------------------------------------------------------------------------------------------
static void WriteFile(const CTL::String& filename, const CTL::String& content,openmode mode = std::ios::out | std::ios::binary);
static void WriteFile(const CTL::String &filename, void* content, size_t size);
static void Append(const CTL::String& filename, const std::vector<char>& data,openmode mode = std::ios::app | std::ios::binary);
static void Append(const CTL::String& filename, CTL::String data,openmode mode = std::ios::app | std::ios::binary);
static void Append(const CTL::String& filename, CTL::ByteArray& data,openmode mode = std::ios::app | std::ios::binary);
static void Append(const CTL::String& filename, void* content, size_t size);
static void WriteAt(const CTL::String& filename, size_t position, const char* data, size_t size);
//--------------------------------------------------------------------------------------------------------------
private:
// 获取文件名
const String& getFilename() const { return m_filename; }
};
}
typedef CTL::FileOutStream CCFileOutStream;
#endif