TNB Library
TnbArchiveFile.h
[詳解]
1#pragma once
11#include "TnbArchiver.h"
13#include "TnbFile.h"
15
16
17
18//TNB Library
19namespace TNB
20{
21
22
23
38{
39 DEFSUPER(IReader);
40public:
41
44 {
45 }
46
48 virtual ~CArchiveFileReader(void)
49 {
50 m_Close();
51 }
52
63 bool Open(CArchiverDllHandler& arcdll, LPCTSTR lpszArcFile, LPCTSTR lpszName, LPCTSTR lpszOpt = NULL)
64 {
65 Close();
66 if ( ! arcdll.IsReady() || arcdll.IsRunning() )
67 {
68 return false;
69 }
70 CArchiver arc(&arcdll);
71 arc.SetTargetArchiveFile(lpszArcFile);
72 CStr strPath = m_tempDir.Create();
73 arc.SetWorkDirectory(strPath);
74 bool r = (arc.ExtractWithDirectory(lpszName, lpszOpt) == 0);
75 if ( r )
76 {
77 CStr ss = strPath + _T("\\") + lpszName;
78 ss.Replace(_T("\\\\"), _T("\\"));
79 r = m_reader.Open(ss);
80 }
81 if ( ! r )
82 {
83 m_tempDir.Free();
84 }
85 return r;
86 }
87
95 bool Open(const CArchiveFileFinder& ff, LPCTSTR lpszOpt = NULL)
96 {
97 const TIndividualInfo* P = ff.RefPtr();
98 if ( ff.IsFinding() && P != NULL )
99 {
100 #ifdef _UNICODE
101 return Open(*ff.GetDllHandler(), CStr(ff.GetTargetArchiveFileName()), CStr(P->szFileName), lpszOpt);
102 #else
103 return Open(*ff.GetDllHandler(), ff.GetTargetArchiveFileName(), P->szFileName, lpszOpt);
104 #endif
105 }
106 return false;
107 }
108
114 virtual LPCTSTR GetOpenName(void) const
115 {
116 return m_reader.GetOpenName();
117 }
118
123 virtual void Close(void)
124 {
125 m_Close();
126 }
127
133 virtual bool CanRead(void) const
134 {
135 return m_reader.CanRead();
136 }
137
143 virtual LONGLONG GetSize(void) const
144 {
145 return m_reader.GetSize();
146 }
147
156 virtual LONGLONG Seek(LONGLONG llOffset, ESeekMode eSeek = TOP) const
157 {
158 return m_reader.Seek(llOffset, eSeek);
159 }
160
168 virtual size_t Read(size_t size, LPVOID _P) const
169 {
170 return m_reader.Read(size, _P);
171 }
172
173private:
175 void m_Close(void)
176 {
177 m_reader.Close();
178 m_tempDir.Free();
179 }
180 CFileReader m_reader;
182
183 friend class CArchiveFileReaderTest;
184};
185
186
187
188}; // TNB
アーカイブファイル検索関係のヘッダ
アーカイバー関係のヘッダ
ファイル関係のヘッダ
テンポラリディレクトリ関係のヘッダ
bool IsFinding(void) const
[確認] 検索中確認
アーカイブ内ファイル検索クラス
CAscii GetTargetArchiveFileName(void) const
[取得] 使用アーカイブファイル名、取得
CArchiverDllHandler * GetDllHandler(void) const
[取得] 使用アーカイバDLL管理クラス、参照
const TIndividualInfo * RefPtr(void) const
[取得] 検索情報参照
アーカイブファイル読み込みクラス
virtual LONGLONG Seek(LONGLONG llOffset, ESeekMode eSeek=TOP) const
[操作] シーク.
virtual size_t Read(size_t size, LPVOID _P) const
[取得] 読み込み
virtual ~CArchiveFileReader(void)
デストラクタ
CArchiveFileReader(void)
コンストラクタ
virtual LONGLONG GetSize(void) const
[取得] サイズ取得
virtual bool CanRead(void) const
[確認] 読み込み可能か
virtual LPCTSTR GetOpenName(void) const
[取得] オープン名取得
virtual void Close(void)
[操作] クローズ
bool Open(const CArchiveFileFinder &ff, LPCTSTR lpszOpt=NULL)
[設定] オープン
bool Open(CArchiverDllHandler &arcdll, LPCTSTR lpszArcFile, LPCTSTR lpszName, LPCTSTR lpszOpt=NULL)
[設定] オープン
アーカイバDLL管理クラス
bool IsRunning(void)
[確認] 動作中確認
bool IsReady(void) const
[確認] DLL準備確認
アーカイバクラス
Definition: TnbArchiver.h:35
void SetWorkDirectory(LPCTSTR lpszWorkDir)
[設定] 作業ディレクトリ指定
Definition: TnbArchiver.h:100
bool SetTargetArchiveFile(LPCTSTR lpszArcFile)
[設定] 対象アーカイブ指定
Definition: TnbArchiver.h:77
int ExtractWithDirectory(LPCTSTR lpszName, LPCTSTR lpszOption=NULL)
[操作] 展開.
Definition: TnbArchiver.h:206
ファイル読み込みクラス
Definition: TnbFile.h:338
virtual LONGLONG Seek(LONGLONG llOffset, ESeekMode eSeek=TOP) const
[操作] シーク.
Definition: TnbFile.h:397
virtual size_t Read(size_t size, LPVOID _P) const
[取得] ファイル読み込み
Definition: TnbFile.h:420
bool Open(LPCTSTR lpszName, bool boIsShare=true, bool boDummy=false)
[操作] オープン
Definition: TnbFile.h:364
virtual LONGLONG GetSize(void) const
[取得] ファイルサイズ取得
Definition: TnbFile.h:408
virtual bool CanRead(void) const
[確認] 読み込み可能か
Definition: TnbFile.h:383
virtual LPCTSTR GetOpenName(void) const
[取得] オープン名取得
Definition: TnbFile.h:373
virtual void Close(void)
[操作] クローズ
Definition: TnbFile.h:351
int Replace(TYP tOld, TYP tNew)
[処理] 文字置換.
Definition: TnbStr.h:1038
CStr Create(void)
[操作] 作成.
void Free(void)
[操作] 解放.
TNB Library
Definition: TnbDoxyTitle.txt:2
読み込みインターフェース
Definition: TnbReader.h:36
ESeekMode
シークのオフセット指定モード
Definition: TnbReader.h:39
@ TOP
頭からのオフセット指定
Definition: TnbReader.h:40
アーカイバDLL用情報構造体
char szFileName[FNAME_MAX32+1]
格納ファイル名