TNB Library
公開型 | 公開メンバ関数 | 静的公開メンバ関数 | 限定公開メンバ関数 | 全メンバ一覧
CFileWriter クラス

ファイル書き込みクラス [詳解]

#include <TnbFile.h>

+ CFileWriter の継承関係図

公開型

enum  EMode { READ , CREATE , ACCESS , WRITE }
 オープンモード [詳解]
 
enum  ESeekMode { TOP = FILE_BEGIN , CURRENT = FILE_CURRENT , END = FILE_END }
 シークのオフセット指定モード [詳解]
 

公開メンバ関数

virtual void AddRaw (size_t size, LPCVOID P)
 [追加] 追加. [詳解]
 
virtual bool CanRead (void) const
 [確認] 読み込み可能か [詳解]
 
virtual bool CanWrite (void) const
 [確認] 書込み可能か [詳解]
 
 CFileWriter (void)
 コンストラクタ [詳解]
 
virtual void Close (void)
 [操作] クローズ [詳解]
 
virtual HANDLE GetHandle (void) const
 [取得] ファイルハンドル取得 [詳解]
 
bool GetInformation (LPBY_HANDLE_FILE_INFORMATION _lpFileInformation) const
 [取得] ファイル情報取得 [詳解]
 
LONGLONG GetLeftoverSize (void) const
 [取得] 残りサイズ取得. [詳解]
 
virtual LPCTSTR GetOpenName (void) const
 [取得] オープン名取得 [詳解]
 
virtual void GetRaw (size_t size, LPVOID _P) const
 [取得] 取得. [詳解]
 
virtual LONGLONG GetSize (void) const
 [取得] ファイルサイズ取得 [詳解]
 
bool New (LPCTSTR lpszName, bool boIsShare=true)
 [操作] 新規オープン. [詳解]
 
bool Open (LPCTSTR lpszName, bool boIsShare=true, bool boIsBottom=true)
 [操作] オープン. [詳解]
 
bool OpenOnMode (LPCTSTR lpszName, EMode eMode=ACCESS, bool isShare=true)
 [操作] モード付オープン [詳解]
 
 operator HANDLE (void) const
 [取得] ファイルハンドル取得 [詳解]
 
template<typename T >
ISerializeroperator<< (const T &t)
 [追加] 追加. [詳解]
 
template<typename T >
const IDeserializeroperator>> (T &_t) const
 [取得] 取得. [詳解]
 
virtual size_t Read (size_t size, LPVOID _P) const
 [取得] ファイル読み込み [詳解]
 
void ReadExactly (size_t size, LPVOID _P) const
 [取得] 読み込み. [詳解]
 
CByteVector ReadExactly (size_t size=0) const
 [取得] 読み込み [詳解]
 
size_t ReadInto (ICollectionT< BYTE > &_out, size_t size=0, size_t oneBlockSize=4096) const
 [取得] 読み込み. [詳解]
 
CByteVector ReadInto (size_t size=0) const
 [取得] 読み込み [詳解]
 
virtual LONGLONG Seek (LONGLONG llOffset, ESeekMode eSeek=TOP) const
 [操作] シーク. [詳解]
 
void SetCreatedAttributes (DWORD attr)
 [設定] 属性設定. [詳解]
 
virtual void SetEnd (void)
 [設定] EOFを指定. [詳解]
 
void SetTime (const CFileTimeEx &timeCreation, const CFileTimeEx &timeLastAccess, const CFileTimeEx &timeLastWrite)
 [設定] ファイル日付設定 [詳解]
 
virtual void Write (size_t size, LPCVOID P)
 [保存] ファイル書き込み [詳解]
 
void WriteFrom (const IConstCollectionT< BYTE > &c)
 [保存] 書き込み. [詳解]
 
void WriteFrom (const IReader &reader, size_t size=0, size_t oneBlockSize=4096)
 [保存] 書き込み. [詳解]
 

静的公開メンバ関数

static bool AddFile (LPCTSTR lpszFileName, size_t size, LPCVOID P, CFileWriter &fw=CFileWriter())
 [保存] ファイル追加. [詳解]
 
static bool NewFile (LPCTSTR lpszFileName, size_t size, LPCVOID P, CFileWriter &fw=CFileWriter())
 [保存] ファイル作成. [詳解]
 

限定公開メンバ関数

virtual void SetHandle (HANDLE h)
 [設定] ファイルハンドル設定 [詳解]
 

詳解

ファイル書き込みクラス

覚え書き
インスタンスの複製すると複製したすべてのインスタンスで同じファイルハンドルを 使うようになります。すべてのインスタンスでCloseしないとファイルハンドルがクローズ されなくなります。
注意
2GByte以上は一度に読み込めません。
2GByte以上は一度に書き込めません。
必要ファイル
TnbFile.h
日付
06/05/01 新規作成
06/08/30 ISerializer 実装。
06/10/02 抽象化して作成した IReader を実装。
06/12/19 新 IWriter に合わせてリファクタリング。
09/04/24 ベースクラス変更。
10/11/30 クラスメソッド NewFile() 追加。
11/09/16 New() の共有フラグが機能していなかったのを修正。

TnbFile.h474 行目に定義があります。

列挙型メンバ詳解

◆ EMode

enum EMode
inherited

オープンモード

列挙値
READ 

読み込みオープン(既存でなければエラーになります)

CREATE 

新規読み書きオープン(既存ファイルは消されます)

ACCESS 

読み書きオープン(既存でなければ作成されます)

WRITE 

書き込みオープン(既存でなければ作成されます)

TnbFile.h39 行目に定義があります。

◆ ESeekMode

enum ESeekMode
inherited

シークのオフセット指定モード

列挙値
TOP 

頭からのオフセット指定

CURRENT 

現在位置からのオフセット指定

END 

末からのオフセット指定

TnbReader.h38 行目に定義があります。

構築子と解体子

◆ CFileWriter()

CFileWriter ( void  )

コンストラクタ

TnbFile.h481 行目に定義があります。

関数詳解

◆ AddFile()

static bool AddFile ( LPCTSTR  lpszFileName,
size_t  size,
LPCVOID  P,
CFileWriter fw = CFileWriter() 
)
static

[保存] ファイル追加.

ファイル名と、内容を指定し、ファイルを作成します。

引数
lpszFileNameファイル名。
size書き込みサイズ。
P書き込みデータ。
fwライター。通常省略します。
戻り値
true成功。
false失敗。

TnbFile.h679 行目に定義があります。

◆ AddRaw()

virtual void AddRaw ( size_t  size,
LPCVOID  P 
)
virtualinherited

[追加] 追加.

指定データを追加します。

引数
size追加するデータサイズ(単位BYTE)
P追加するデータ
例外
CTnbException失敗時は、任意のスローの可能性があります。

ISerializerを実装しています。

TnbWriter.h115 行目に定義があります。

◆ CanRead()

virtual bool CanRead ( void  ) const
virtual

[確認] 読み込み可能か

戻り値
true可能
false不可能

IReaderを実装しています。

TnbFile.h540 行目に定義があります。

◆ CanWrite()

virtual bool CanWrite ( void  ) const
virtual

[確認] 書込み可能か

戻り値
true可能
false不可能

IWriterを実装しています。

TnbFile.h550 行目に定義があります。

◆ Close()

virtual void Close ( void  )
virtual

[操作] クローズ

IReaderを実装しています。

TnbFile.h488 行目に定義があります。

◆ GetHandle()

virtual HANDLE GetHandle ( void  ) const
virtualinherited

[取得] ファイルハンドル取得

戻り値
ハンドル

TnbFile.h248 行目に定義があります。

◆ GetInformation()

bool GetInformation ( LPBY_HANDLE_FILE_INFORMATION  _lpFileInformation) const
inherited

[取得] ファイル情報取得

参照
http://msdn.microsoft.com/library/ja/jpfileio/html/_win32_GetFileInformationByHandle.asp
引数
[out]_lpFileInformation取得情報の格納場所
戻り値
true取得成功
false失敗

TnbFile.h156 行目に定義があります。

◆ GetLeftoverSize()

LONGLONG GetLeftoverSize ( void  ) const
inherited

[取得] 残りサイズ取得.

現在の位置から最後までのサイズを返します。

戻り値
0以上サイズ
マイナス取得失敗

TnbReader.h95 行目に定義があります。

◆ GetOpenName()

virtual LPCTSTR GetOpenName ( void  ) const
virtual

[取得] オープン名取得

戻り値
名前

IReaderを実装しています。

TnbFile.h530 行目に定義があります。

◆ GetRaw()

virtual void GetRaw ( size_t  size,
LPVOID  _P 
) const
virtualinherited

[取得] 取得.

指定データを取得します。

引数
[in]size取得するデータサイズ(単位BYTE)
[out]_P取得するデータ
例外
CTnbException失敗時は、任意のスローの可能性があります。

IDeserializerを実装しています。

TnbReader.h211 行目に定義があります。

◆ GetSize()

virtual LONGLONG GetSize ( void  ) const
virtual

[取得] ファイルサイズ取得

参照
http://msdn.microsoft.com/library/ja/jpfileio/html/_win32_GetFileSize.asp
戻り値
0以上ファイルサイズ
マイナス取得失敗

IReaderを実装しています。

TnbFile.h575 行目に定義があります。

◆ New()

bool New ( LPCTSTR  lpszName,
bool  boIsShare = true 
)

[操作] 新規オープン.

覚え書き
既存の場合、削除して新規で作成します。
引数
lpszNameファイル名。
boIsSharetrue なら共有モードでオープンします。
戻り値
trueオープン成功
falseオープン失敗 ( GetLastError() により詳細取得可能)

TnbFile.h501 行目に定義があります。

◆ NewFile()

static bool NewFile ( LPCTSTR  lpszFileName,
size_t  size,
LPCVOID  P,
CFileWriter fw = CFileWriter() 
)
static

[保存] ファイル作成.

ファイル名と、内容を指定し、ファイルを作成します。

引数
lpszFileNameファイル名。
size書き込みサイズ。
P書き込みデータ。
fwライター。通常省略します。
戻り値
true成功。
false失敗。

TnbFile.h653 行目に定義があります。

◆ Open()

bool Open ( LPCTSTR  lpszName,
bool  boIsShare = true,
bool  boIsBottom = true 
)

[操作] オープン.

覚え書き
既存しないなら新規で作成します。
引数
lpszNameファイル名。
boIsShare省略かtrueなら、共有モードでオープンします。
boIsBottomオープン時、true ならファイルポインタを最後に移動します。 falseなら先頭のままです。
戻り値
trueオープン成功
falseオープン失敗 ( GetLastError() により詳細取得可能)

TnbFile.h516 行目に定義があります。

◆ OpenOnMode()

bool OpenOnMode ( LPCTSTR  lpszName,
EMode  eMode = ACCESS,
bool  isShare = true 
)
inherited

[操作] モード付オープン

覚え書き
特殊なオープンをする以外は、サブクラスの Open系メソッドを使用してください。
参照
http://msdn.microsoft.com/library/ja/jpfileio/html/_win32_createfile.asp
引数
lpszNameオープンするファイル名。
eModeオープンモード。省略なら access になります。
isShare省略かtrueなら、共有モードでオープンします。
戻り値
trueオープン成功
falseオープン失敗 ( GetLastError() により詳細取得可能)

TnbFile.h88 行目に定義があります。

◆ operator HANDLE()

operator HANDLE ( void  ) const
inherited

[取得] ファイルハンドル取得

戻り値
ハンドル

TnbFile.h230 行目に定義があります。

◆ operator<<()

ISerializer & operator<< ( const T &  t)
inherited

[追加] 追加.

指定データをシリアライズして追加します。

引数
tデータ
戻り値
自分の参照
例外
CNotSupportExceptionシリアライズをサポートしていない型が指定されると、スローされます。
CTnbException失敗時は、任意のスローの可能性があります。

TnbSerializer.h161 行目に定義があります。

◆ operator>>()

const IDeserializer & operator>> ( T &  _t) const
inherited

[取得] 取得.

指定データをデシリアライズして取得します。

引数
[out]_tデータ
戻り値
自分の参照
例外
CNotSupportExceptionデシリアライズをサポートしていない型が指定されると、スローされます。
CTnbException失敗時は、任意のスローの可能性があります。

TnbSerializer.h277 行目に定義があります。

◆ Read()

virtual size_t Read ( size_t  size,
LPVOID  _P 
) const
virtual

[取得] ファイル読み込み

引数
[in]size読み込みサイズ。
[out]_P読み込みアドレス。 size 分書き込める領域である必要が有ります。
戻り値
読み込めたサイズ。
例外
CReadFailureException読み込みに失敗すると、スローされます。

IReaderを実装しています。

TnbFile.h587 行目に定義があります。

◆ ReadExactly() [1/2]

void ReadExactly ( size_t  size,
LPVOID  _P 
) const
inherited

[取得] 読み込み.

覚え書き
指定サイズ読めないとエラーになります。
引数
[in]size読み込みサイズ。
[out]_P読み込みアドレス。 size 分書き込める領域である必要が有ります。
例外
CReadFailureException読み込みに失敗すると、スローされます。
CShortOfDataException指定サイズ読込めないと、スローされます。

TnbReader.h114 行目に定義があります。

◆ ReadExactly() [2/2]

CByteVector ReadExactly ( size_t  size = 0) const
inherited

[取得] 読み込み

覚え書き
指定サイズ読めないとエラーになります。
引数
size読み込みサイズ。0ならファイル最後まで読み込む。
戻り値
ByteVector ファイル内容(サイズは読み込めたサイズ)。
例外
CReadFailureException読み込みに失敗すると、スローされます。
CShortOfDataException指定サイズ読込めないと、スローされます。

TnbReader.h134 行目に定義があります。

◆ ReadInto() [1/2]

size_t ReadInto ( ICollectionT< BYTE > &  _out,
size_t  size = 0,
size_t  oneBlockSize = 4096 
) const
inherited

[取得] 読み込み.

引数
[out]_out読込先。クリアせず、後ろに追加します。
size読み込みサイズ。省略か0ならファイル最後まで読み込む。
oneBlockSize一度に読み込むサイズ。省略なら4K。
戻り値
読み込めたサイズ。
例外
CReadFailureException読み込みに失敗すると、スローされます。

TnbReader.h178 行目に定義があります。

◆ ReadInto() [2/2]

CByteVector ReadInto ( size_t  size = 0) const
inherited

[取得] 読み込み

引数
size読み込みサイズ。0ならファイル最後まで読み込む。
戻り値
ByteVector ファイル内容(サイズは読み込めたサイズ)。
例外
CReadFailureException読み込みに失敗すると、スローされます。

TnbReader.h150 行目に定義があります。

◆ Seek()

virtual LONGLONG Seek ( LONGLONG  llOffset,
ESeekMode  eSeek = TOP 
) const
virtual

[操作] シーク.

ファイルポインタを移動します。

参照
http://msdn.microsoft.com/library/ja/jpfileio/html/_win32_SetFilePointer.asp
引数
llOffsetファイルポインタの移動数。
eSeek移動開始ファイルポインタ位置。省略すると TOP になります。
戻り値
0以上シーク成功。数値は、現在のファイルポインタ
マイナスシーク失敗 ( GetLastError() により詳細取得可能)

IReaderを実装しています。

TnbFile.h564 行目に定義があります。

◆ SetCreatedAttributes()

void SetCreatedAttributes ( DWORD  attr)
inherited

[設定] 属性設定.

覚え書き
CreateFile 時の属性値の設定が可能です。
引数
attr属性。

TnbFile.h73 行目に定義があります。

◆ SetEnd()

virtual void SetEnd ( void  )
virtual

[設定] EOFを指定.

現在のファイルポインタの位置をEOFにします。

参照
http://msdn.microsoft.com/library/ja/jpfileio/html/_win32_SetEndOfFile.asp
例外
CWriteFailureException書込みに失敗すると、スローされます。

IWriterを実装しています。

TnbFile.h614 行目に定義があります。

◆ SetHandle()

virtual void SetHandle ( HANDLE  h)
protectedvirtualinherited

[設定] ファイルハンドル設定

引数
hハンドル

TnbFile.h258 行目に定義があります。

◆ SetTime()

void SetTime ( const CFileTimeEx timeCreation,
const CFileTimeEx timeLastAccess,
const CFileTimeEx timeLastWrite 
)

[設定] ファイル日付設定

引数
timeCreation作成日付
timeLastAccess最終アクセス日付
timeLastWrite書込み日付
例外
CWriteFailureExceptionコンストラクタ throw を有効にしていて、書込みに失敗すると、スローされます。

TnbFile.h599 行目に定義があります。

◆ Write()

virtual void Write ( size_t  size,
LPCVOID  P 
)
virtual

[保存] ファイル書き込み

引数
size書き込みサイズ。
P書き込みデータ。
例外
CWriteFailureException書込みに失敗すると、スローされます。size が大き過ぎてもエラーになります。

IWriterを実装しています。

TnbFile.h628 行目に定義があります。

◆ WriteFrom() [1/2]

void WriteFrom ( const IConstCollectionT< BYTE > &  c)
inherited

[保存] 書き込み.

覚え書き
内部で一度 CVectorT<BYTE> に変換しています。
引数
c書き込みデータ。
例外
CWriteFailureException書込みに失敗すると、スローされます。

TnbWriter.h65 行目に定義があります。

◆ WriteFrom() [2/2]

void WriteFrom ( const IReader reader,
size_t  size = 0,
size_t  oneBlockSize = 4096 
)
inherited

[保存] 書き込み.

覚え書き
reader の現在の位置から読み出し、書き込みます。
引数
reader書き込みデータ 。
size読み込みサイズ。省略か0ならファイル最後まで読み込む。
oneBlockSize一度に読み込むサイズ。省略なら4K。
例外
CReadFailureException読み込みに失敗すると、スローされます。
CWriteFailureException書込みに失敗すると、スローされます。

TnbWriter.h85 行目に定義があります。